<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.stoney-cloud.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chrigu</id>
	<title>stoney-cloud.org - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stoney-cloud.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chrigu"/>
	<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/wiki/Special:Contributions/Chrigu"/>
	<updated>2026-04-14T22:24:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4567</id>
		<title>stoney cloud: Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4567"/>
		<updated>2015-03-17T09:17:09Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Basic Testing Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This guide explains, what you need to do during the installation of your Multi-Node Installation.&lt;br /&gt;
&lt;br /&gt;
== Prepare your stoney cloud installation for the update ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;= 1.2.10.3 ===&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;productive&#039;&#039;&#039; (releases) stoney cloud Installation, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;test&#039;&#039;&#039; (pre-releases) stoney cloud Installation instead, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Even a pre-release ISO may result in a stable installation, depending on when it was generated in the release cycle. Please verify by executing &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/usr/portage&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud&amp;lt;/code&amp;gt; whether this is the case, and [[stoney_cloud:_Switch_to_testing_branch|switch to the testing branch]] if needed (that is: if the branch displayed does not contain the words &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt;. If the branch is empty, that means you have a brand new installation without anything yet. In that case, directly check the configuration files &amp;lt;code&amp;gt;/usr/portage/.git/config&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud/.git/config&amp;lt;/code&amp;gt; to see which branch it would check out upon &amp;lt;code&amp;gt;emerge --sync&amp;lt;/code&amp;gt; and from where.).&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt;= 1.2.10.4 ===&lt;br /&gt;
&lt;br /&gt;
Execute the following command to register the binary package mirror (since for now there will be only pre-releases, but with better quality than FOSS-Cloud releases):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&lt;br /&gt;
# Disable the SYNC from rsync since newer portage versions otherwise won&#039;t accept a portage tree via git&lt;br /&gt;
sed -i -e &#039;s|^SYNC|#SYNC|&#039; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
=== Updating from 1.2.10.7 or earlier to 1.2.10.8_rc4 or newer ===&lt;br /&gt;
&lt;br /&gt;
A complete rebuild of all packages was required, therefore the update guide is different:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --sync&lt;br /&gt;
&lt;br /&gt;
emerge -eK world -va&lt;br /&gt;
 &lt;br /&gt;
# sst-libvirt-hooks is not part of the stoney-cloud anymore since it requires further configuration&lt;br /&gt;
# make sure that it still gets updated and not removed later, if you have it installed and enabled&lt;br /&gt;
emerge -K app-emulation/sst-libvirt-hooks&lt;br /&gt;
 &lt;br /&gt;
dispatch-conf&lt;br /&gt;
 &lt;br /&gt;
# Switch runtime switchable options&lt;br /&gt;
eselect python set python3.3&lt;br /&gt;
eselect php set cli php5.5&lt;br /&gt;
eselect php set apache2 php5.5&lt;br /&gt;
gcc-config x86_64-pc-linux-gnu-4.7.3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the dispatch-conf the following may appear:&lt;br /&gt;
* /etc/libvirt/libvirt.conf: you may get the suggestion to remove almost all content. Quit dispatch-conf and do: &amp;lt;code&amp;gt;rm /etc/libvirt/._mrg*&amp;lt;/code&amp;gt; and start dispatch-conf again.&lt;br /&gt;
* /etc/libvirt/libvirt.conf: merge all whitespace/comment changes but make sure you don&#039;t overwrite the &amp;lt;code&amp;gt;listen_addr&amp;lt;/code&amp;gt;&lt;br /&gt;
* /etc/portage/make.conf: merge all changes beside the &amp;lt;code&amp;gt;PORTAGE_BINHOST&amp;lt;/code&amp;gt;&lt;br /&gt;
* /var/www/localhost/htdocs/vm-manager/vm_config.php: merge the versions, newly added lines and comments. Avoid changes on sstSourceHostName array&lt;br /&gt;
&lt;br /&gt;
To make sure everything works, reboot and then cleanup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --depclean -va&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If the cleanup fails stating that &amp;lt;code&amp;gt;Locale-gettext&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dev-libs/boost&amp;lt;/code&amp;gt; depends on some version of perl, reinstall that package manually once and try again:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge -1Kva dev-libs/boost Locale-gettext&lt;br /&gt;
&lt;br /&gt;
# same for autoconf-/automake-wrapper if host was used to build stuff:&lt;br /&gt;
emerge -1K sys-devel/autoconf-wrapper sys-devel/automake-wrapper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;WARNING&#039;&#039;&#039;: this also removes the current kernel. If you want to play it safe, reboot first, then depclean, then reboot again&lt;br /&gt;
* Rebuilde separately installed perl modules and remove traces of the old perl version:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
perl-cleaner --all -- -va&lt;br /&gt;
rm -rf /usr/lib64/perl5/{vendor_perl,}/5.12.4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Emulator ====&lt;br /&gt;
* u=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,o=stepping-stone,c=ch&lt;br /&gt;
&lt;br /&gt;
Change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-kvm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-system-x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Source Port ====&lt;br /&gt;
* sstDisk=vda,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
* sstDisk=vdb,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstSourcePort: 24007&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firewall / Subversion ====&lt;br /&gt;
If you are using our firewall scripts (libvirt-hooks based), you&#039;ll also have to upgrade subversion (on all the stoney cloud nodes):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/vms&lt;br /&gt;
svn upgrade&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/$(hostname -s)&lt;br /&gt;
svn upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regular Update ===&lt;br /&gt;
&lt;br /&gt;
Makes sure, your local portage tree is updated:&lt;br /&gt;
 emerge --sync&lt;br /&gt;
&lt;br /&gt;
Now you can make sure, that you&#039;ve got the current stoney cloud version installed:&lt;br /&gt;
 emerge -KuDva virtual/foss-cloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
&lt;br /&gt;
Total: 0 packages, Size of downloads: 0 kB&lt;br /&gt;
&lt;br /&gt;
 * virtual/foss-cloud-1.2.10.4&lt;br /&gt;
&lt;br /&gt;
Would you like to add these packages to your world favorites? [Yes/No] &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have updated you stoney cloud, you might want to sanely update your configuration files after emerging new packages (including updates):&lt;br /&gt;
 dispatch-conf&lt;br /&gt;
&lt;br /&gt;
== Installing Software Examples ==&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages. So if you don&#039;t pass any special parameters to the emerge command, the binary package (if it exists) will be used.&lt;br /&gt;
&lt;br /&gt;
=== Binary Package ===&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages, which can be seen with &#039;&#039;&#039;[binary   R    ]&#039;&#039;&#039; output.&lt;br /&gt;
 emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[binary   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] no&lt;br /&gt;
&lt;br /&gt;
Quitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Force Non-Binary Package ===&lt;br /&gt;
If you force a non-binary package, the output will be in the form of &#039;&#039;&#039;[ebuild   R    ]&#039;&#039;&#039;.&lt;br /&gt;
 FEATURES=&amp;quot;-getbinpkg&amp;quot; emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] app-arch/cpio-2.11  USE=&amp;quot;nls&amp;quot; 995 kB&lt;br /&gt;
[ebuild   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 4,523 kB&lt;br /&gt;
&lt;br /&gt;
Total: 2 packages (1 new, 1 reinstall), Size of downloads: 5,518 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== No Binary Package Exists ===&lt;br /&gt;
The following example shows you a package with no existing binary package, therefore the package must be compiled on the fly, shown with &#039;&#039;&#039;[ebuild  N     ]&#039;&#039;&#039;.&lt;br /&gt;
 emerge -va htop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] sys-process/htop-1.0.2  USE=&amp;quot;unicode -openvz -vserver&amp;quot; 380 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 new), Size of downloads: 380 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multi-Node Installation ==&lt;br /&gt;
Follow the [[Multi-Node_Installation#Specialized_Installation | Specialized Installation]] Guide.&lt;br /&gt;
&lt;br /&gt;
== Basic Testing Steps ==&lt;br /&gt;
Get your stoney cloud image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=1.2.10.7        # stoney cloud version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/iso/foss-cloud-installer-${version}.iso&lt;br /&gt;
chown apache:vm-storage foss-cloud-installer-${version}.iso&lt;br /&gt;
chmod 644 foss-cloud-installer-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the [http://www.sysresccd.org/SystemRescueCd_Homepage SystemRescueCd] ISO:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=4.5.1       # SystemRescueCd version&lt;br /&gt;
sha256=&amp;quot;4fda2fce55a46c7b258fba10c88a4a337821c8b801a8cd3c344cc223a9c4436d&amp;quot; # SHA256 checksum of the ISO&lt;br /&gt;
isoFile=&amp;quot;systemrescuecd-x86-${version}.iso&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
&lt;br /&gt;
wget http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/${version}/${isoFile}&lt;br /&gt;
&lt;br /&gt;
# Check that the file was downloaded correctly&lt;br /&gt;
echo &amp;quot;${sha256} ${isoFile}&amp;quot; | sha256sum -c -&lt;br /&gt;
&lt;br /&gt;
chown apache:vm-storage ${isoFile}&lt;br /&gt;
chmod 644 ${isoFile}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Fedora ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=21        # Fedora version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/${version}/Server/x86_64/iso/Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chown apache:vm-storage Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chmod 644 Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lernstick (Test):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://www.imedias.ch/dateien/lernstick-testversion/lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chown apache:vm-storage lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chmod 644 lernstick_debian7_2013-12-12.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your debian image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=7.8.0        # Debian version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://cdimage.debian.org/debian-cd/${version}/amd64/iso-cd/debian-${version}-amd64-netinst.iso&lt;br /&gt;
chown apache:vm-storage debian-${version}-amd64-netinst.iso&lt;br /&gt;
chmod 644 debian-${version}-amd64-netinst.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu desktop image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu server image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-server-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Windows 2012 Server R2 ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://care.dlservice.microsoft.com/dl/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO -O windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chown apache:vm-storage windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chmod 644 windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need the newest Windows Drivers ISO image, visit http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/&lt;br /&gt;
&lt;br /&gt;
Set three network ranges under https://192.168.140.10/vm-manager/subnet/index.html&lt;br /&gt;
 192.168.140.64&lt;br /&gt;
 26&lt;br /&gt;
 Template Range&lt;br /&gt;
 template&lt;br /&gt;
&lt;br /&gt;
 192.168.140.128&lt;br /&gt;
 26&lt;br /&gt;
 Persistent Range&lt;br /&gt;
 persistent&lt;br /&gt;
&lt;br /&gt;
 192.168.140.192&lt;br /&gt;
 26&lt;br /&gt;
 Dynamic Range&lt;br /&gt;
 dynamic&lt;br /&gt;
&lt;br /&gt;
Add the three newly creates network ranges to the VM-Pools under https://192.168.140.10/vm-manager/vmPool/index.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Profile under https://192.168.140.10/vm-manager/vmProfile/create.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Template under https://192.168.140.10/vm-manager/vmTemplate/create.html and install a basic operating system.&lt;br /&gt;
&lt;br /&gt;
Create a persistent Virtual Machine from the newly created Virtual Machine Template.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:stoney cloud]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4566</id>
		<title>stoney cloud: Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4566"/>
		<updated>2015-03-17T09:15:31Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Basic Testing Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This guide explains, what you need to do during the installation of your Multi-Node Installation.&lt;br /&gt;
&lt;br /&gt;
== Prepare your stoney cloud installation for the update ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;= 1.2.10.3 ===&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;productive&#039;&#039;&#039; (releases) stoney cloud Installation, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;test&#039;&#039;&#039; (pre-releases) stoney cloud Installation instead, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Even a pre-release ISO may result in a stable installation, depending on when it was generated in the release cycle. Please verify by executing &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/usr/portage&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud&amp;lt;/code&amp;gt; whether this is the case, and [[stoney_cloud:_Switch_to_testing_branch|switch to the testing branch]] if needed (that is: if the branch displayed does not contain the words &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt;. If the branch is empty, that means you have a brand new installation without anything yet. In that case, directly check the configuration files &amp;lt;code&amp;gt;/usr/portage/.git/config&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud/.git/config&amp;lt;/code&amp;gt; to see which branch it would check out upon &amp;lt;code&amp;gt;emerge --sync&amp;lt;/code&amp;gt; and from where.).&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt;= 1.2.10.4 ===&lt;br /&gt;
&lt;br /&gt;
Execute the following command to register the binary package mirror (since for now there will be only pre-releases, but with better quality than FOSS-Cloud releases):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&lt;br /&gt;
# Disable the SYNC from rsync since newer portage versions otherwise won&#039;t accept a portage tree via git&lt;br /&gt;
sed -i -e &#039;s|^SYNC|#SYNC|&#039; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
=== Updating from 1.2.10.7 or earlier to 1.2.10.8_rc4 or newer ===&lt;br /&gt;
&lt;br /&gt;
A complete rebuild of all packages was required, therefore the update guide is different:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --sync&lt;br /&gt;
&lt;br /&gt;
emerge -eK world -va&lt;br /&gt;
 &lt;br /&gt;
# sst-libvirt-hooks is not part of the stoney-cloud anymore since it requires further configuration&lt;br /&gt;
# make sure that it still gets updated and not removed later, if you have it installed and enabled&lt;br /&gt;
emerge -K app-emulation/sst-libvirt-hooks&lt;br /&gt;
 &lt;br /&gt;
dispatch-conf&lt;br /&gt;
 &lt;br /&gt;
# Switch runtime switchable options&lt;br /&gt;
eselect python set python3.3&lt;br /&gt;
eselect php set cli php5.5&lt;br /&gt;
eselect php set apache2 php5.5&lt;br /&gt;
gcc-config x86_64-pc-linux-gnu-4.7.3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the dispatch-conf the following may appear:&lt;br /&gt;
* /etc/libvirt/libvirt.conf: you may get the suggestion to remove almost all content. Quit dispatch-conf and do: &amp;lt;code&amp;gt;rm /etc/libvirt/._mrg*&amp;lt;/code&amp;gt; and start dispatch-conf again.&lt;br /&gt;
* /etc/libvirt/libvirt.conf: merge all whitespace/comment changes but make sure you don&#039;t overwrite the &amp;lt;code&amp;gt;listen_addr&amp;lt;/code&amp;gt;&lt;br /&gt;
* /etc/portage/make.conf: merge all changes beside the &amp;lt;code&amp;gt;PORTAGE_BINHOST&amp;lt;/code&amp;gt;&lt;br /&gt;
* /var/www/localhost/htdocs/vm-manager/vm_config.php: merge the versions, newly added lines and comments. Avoid changes on sstSourceHostName array&lt;br /&gt;
&lt;br /&gt;
To make sure everything works, reboot and then cleanup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --depclean -va&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If the cleanup fails stating that &amp;lt;code&amp;gt;Locale-gettext&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dev-libs/boost&amp;lt;/code&amp;gt; depends on some version of perl, reinstall that package manually once and try again:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge -1Kva dev-libs/boost Locale-gettext&lt;br /&gt;
&lt;br /&gt;
# same for autoconf-/automake-wrapper if host was used to build stuff:&lt;br /&gt;
emerge -1K sys-devel/autoconf-wrapper sys-devel/automake-wrapper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;WARNING&#039;&#039;&#039;: this also removes the current kernel. If you want to play it safe, reboot first, then depclean, then reboot again&lt;br /&gt;
* Rebuilde separately installed perl modules and remove traces of the old perl version:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
perl-cleaner --all -- -va&lt;br /&gt;
rm -rf /usr/lib64/perl5/{vendor_perl,}/5.12.4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Emulator ====&lt;br /&gt;
* u=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,o=stepping-stone,c=ch&lt;br /&gt;
&lt;br /&gt;
Change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-kvm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-system-x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Source Port ====&lt;br /&gt;
* sstDisk=vda,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
* sstDisk=vdb,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstSourcePort: 24007&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firewall / Subversion ====&lt;br /&gt;
If you are using our firewall scripts (libvirt-hooks based), you&#039;ll also have to upgrade subversion (on all the stoney cloud nodes):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/vms&lt;br /&gt;
svn upgrade&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/$(hostname -s)&lt;br /&gt;
svn upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regular Update ===&lt;br /&gt;
&lt;br /&gt;
Makes sure, your local portage tree is updated:&lt;br /&gt;
 emerge --sync&lt;br /&gt;
&lt;br /&gt;
Now you can make sure, that you&#039;ve got the current stoney cloud version installed:&lt;br /&gt;
 emerge -KuDva virtual/foss-cloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
&lt;br /&gt;
Total: 0 packages, Size of downloads: 0 kB&lt;br /&gt;
&lt;br /&gt;
 * virtual/foss-cloud-1.2.10.4&lt;br /&gt;
&lt;br /&gt;
Would you like to add these packages to your world favorites? [Yes/No] &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have updated you stoney cloud, you might want to sanely update your configuration files after emerging new packages (including updates):&lt;br /&gt;
 dispatch-conf&lt;br /&gt;
&lt;br /&gt;
== Installing Software Examples ==&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages. So if you don&#039;t pass any special parameters to the emerge command, the binary package (if it exists) will be used.&lt;br /&gt;
&lt;br /&gt;
=== Binary Package ===&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages, which can be seen with &#039;&#039;&#039;[binary   R    ]&#039;&#039;&#039; output.&lt;br /&gt;
 emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[binary   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] no&lt;br /&gt;
&lt;br /&gt;
Quitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Force Non-Binary Package ===&lt;br /&gt;
If you force a non-binary package, the output will be in the form of &#039;&#039;&#039;[ebuild   R    ]&#039;&#039;&#039;.&lt;br /&gt;
 FEATURES=&amp;quot;-getbinpkg&amp;quot; emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] app-arch/cpio-2.11  USE=&amp;quot;nls&amp;quot; 995 kB&lt;br /&gt;
[ebuild   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 4,523 kB&lt;br /&gt;
&lt;br /&gt;
Total: 2 packages (1 new, 1 reinstall), Size of downloads: 5,518 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== No Binary Package Exists ===&lt;br /&gt;
The following example shows you a package with no existing binary package, therefore the package must be compiled on the fly, shown with &#039;&#039;&#039;[ebuild  N     ]&#039;&#039;&#039;.&lt;br /&gt;
 emerge -va htop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] sys-process/htop-1.0.2  USE=&amp;quot;unicode -openvz -vserver&amp;quot; 380 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 new), Size of downloads: 380 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multi-Node Installation ==&lt;br /&gt;
Follow the [[Multi-Node_Installation#Specialized_Installation | Specialized Installation]] Guide.&lt;br /&gt;
&lt;br /&gt;
== Basic Testing Steps ==&lt;br /&gt;
Get your stoney cloud image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=1.2.10.7        # stoney cloud version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/iso/foss-cloud-installer-${version}.iso&lt;br /&gt;
chown apache:vm-storage foss-cloud-installer-${version}.iso&lt;br /&gt;
chmod 644 foss-cloud-installer-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the [http://www.sysresccd.org/SystemRescueCd_Homepage SystemRescueCd] ISO:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=4.5.1       # SystemRescueCd version&lt;br /&gt;
sha256=&amp;quot;4fda2fce55a46c7b258fba10c88a4a337821c8b801a8cd3c344cc223a9c4436d&amp;quot; # SHA256 checksum of the ISO&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
&lt;br /&gt;
wget http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/${version}/systemrescuecd-x86-${version}.iso&lt;br /&gt;
&lt;br /&gt;
# Check that the file was downloaded correctly&lt;br /&gt;
echo &amp;quot;${sha256} systemrescuecd-x86-${version}.iso&amp;quot; | sha256sum -c -&lt;br /&gt;
&lt;br /&gt;
chown apache:vm-storage systemrescuecd-x86-${version}.iso&lt;br /&gt;
chmod 644 systemrescuecd-x86-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Fedora ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=21        # Fedora version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/${version}/Server/x86_64/iso/Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chown apache:vm-storage Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chmod 644 Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lernstick (Test):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://www.imedias.ch/dateien/lernstick-testversion/lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chown apache:vm-storage lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chmod 644 lernstick_debian7_2013-12-12.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your debian image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=7.8.0        # Debian version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://cdimage.debian.org/debian-cd/${version}/amd64/iso-cd/debian-${version}-amd64-netinst.iso&lt;br /&gt;
chown apache:vm-storage debian-${version}-amd64-netinst.iso&lt;br /&gt;
chmod 644 debian-${version}-amd64-netinst.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu desktop image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu server image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-server-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Windows 2012 Server R2 ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://care.dlservice.microsoft.com/dl/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO -O windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chown apache:vm-storage windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chmod 644 windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need the newest Windows Drivers ISO image, visit http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/&lt;br /&gt;
&lt;br /&gt;
Set three network ranges under https://192.168.140.10/vm-manager/subnet/index.html&lt;br /&gt;
 192.168.140.64&lt;br /&gt;
 26&lt;br /&gt;
 Template Range&lt;br /&gt;
 template&lt;br /&gt;
&lt;br /&gt;
 192.168.140.128&lt;br /&gt;
 26&lt;br /&gt;
 Persistent Range&lt;br /&gt;
 persistent&lt;br /&gt;
&lt;br /&gt;
 192.168.140.192&lt;br /&gt;
 26&lt;br /&gt;
 Dynamic Range&lt;br /&gt;
 dynamic&lt;br /&gt;
&lt;br /&gt;
Add the three newly creates network ranges to the VM-Pools under https://192.168.140.10/vm-manager/vmPool/index.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Profile under https://192.168.140.10/vm-manager/vmProfile/create.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Template under https://192.168.140.10/vm-manager/vmTemplate/create.html and install a basic operating system.&lt;br /&gt;
&lt;br /&gt;
Create a persistent Virtual Machine from the newly created Virtual Machine Template.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:stoney cloud]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4565</id>
		<title>stoney cloud: Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4565"/>
		<updated>2015-03-17T09:14:01Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Basic Testing Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This guide explains, what you need to do during the installation of your Multi-Node Installation.&lt;br /&gt;
&lt;br /&gt;
== Prepare your stoney cloud installation for the update ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;= 1.2.10.3 ===&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;productive&#039;&#039;&#039; (releases) stoney cloud Installation, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;test&#039;&#039;&#039; (pre-releases) stoney cloud Installation instead, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Even a pre-release ISO may result in a stable installation, depending on when it was generated in the release cycle. Please verify by executing &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/usr/portage&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud&amp;lt;/code&amp;gt; whether this is the case, and [[stoney_cloud:_Switch_to_testing_branch|switch to the testing branch]] if needed (that is: if the branch displayed does not contain the words &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt;. If the branch is empty, that means you have a brand new installation without anything yet. In that case, directly check the configuration files &amp;lt;code&amp;gt;/usr/portage/.git/config&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud/.git/config&amp;lt;/code&amp;gt; to see which branch it would check out upon &amp;lt;code&amp;gt;emerge --sync&amp;lt;/code&amp;gt; and from where.).&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt;= 1.2.10.4 ===&lt;br /&gt;
&lt;br /&gt;
Execute the following command to register the binary package mirror (since for now there will be only pre-releases, but with better quality than FOSS-Cloud releases):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&lt;br /&gt;
# Disable the SYNC from rsync since newer portage versions otherwise won&#039;t accept a portage tree via git&lt;br /&gt;
sed -i -e &#039;s|^SYNC|#SYNC|&#039; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
=== Updating from 1.2.10.7 or earlier to 1.2.10.8_rc4 or newer ===&lt;br /&gt;
&lt;br /&gt;
A complete rebuild of all packages was required, therefore the update guide is different:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --sync&lt;br /&gt;
&lt;br /&gt;
emerge -eK world -va&lt;br /&gt;
 &lt;br /&gt;
# sst-libvirt-hooks is not part of the stoney-cloud anymore since it requires further configuration&lt;br /&gt;
# make sure that it still gets updated and not removed later, if you have it installed and enabled&lt;br /&gt;
emerge -K app-emulation/sst-libvirt-hooks&lt;br /&gt;
 &lt;br /&gt;
dispatch-conf&lt;br /&gt;
 &lt;br /&gt;
# Switch runtime switchable options&lt;br /&gt;
eselect python set python3.3&lt;br /&gt;
eselect php set cli php5.5&lt;br /&gt;
eselect php set apache2 php5.5&lt;br /&gt;
gcc-config x86_64-pc-linux-gnu-4.7.3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the dispatch-conf the following may appear:&lt;br /&gt;
* /etc/libvirt/libvirt.conf: you may get the suggestion to remove almost all content. Quit dispatch-conf and do: &amp;lt;code&amp;gt;rm /etc/libvirt/._mrg*&amp;lt;/code&amp;gt; and start dispatch-conf again.&lt;br /&gt;
* /etc/libvirt/libvirt.conf: merge all whitespace/comment changes but make sure you don&#039;t overwrite the &amp;lt;code&amp;gt;listen_addr&amp;lt;/code&amp;gt;&lt;br /&gt;
* /etc/portage/make.conf: merge all changes beside the &amp;lt;code&amp;gt;PORTAGE_BINHOST&amp;lt;/code&amp;gt;&lt;br /&gt;
* /var/www/localhost/htdocs/vm-manager/vm_config.php: merge the versions, newly added lines and comments. Avoid changes on sstSourceHostName array&lt;br /&gt;
&lt;br /&gt;
To make sure everything works, reboot and then cleanup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --depclean -va&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If the cleanup fails stating that &amp;lt;code&amp;gt;Locale-gettext&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dev-libs/boost&amp;lt;/code&amp;gt; depends on some version of perl, reinstall that package manually once and try again:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge -1Kva dev-libs/boost Locale-gettext&lt;br /&gt;
&lt;br /&gt;
# same for autoconf-/automake-wrapper if host was used to build stuff:&lt;br /&gt;
emerge -1K sys-devel/autoconf-wrapper sys-devel/automake-wrapper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;WARNING&#039;&#039;&#039;: this also removes the current kernel. If you want to play it safe, reboot first, then depclean, then reboot again&lt;br /&gt;
* Rebuilde separately installed perl modules and remove traces of the old perl version:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
perl-cleaner --all -- -va&lt;br /&gt;
rm -rf /usr/lib64/perl5/{vendor_perl,}/5.12.4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Emulator ====&lt;br /&gt;
* u=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,o=stepping-stone,c=ch&lt;br /&gt;
&lt;br /&gt;
Change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-kvm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-system-x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Source Port ====&lt;br /&gt;
* sstDisk=vda,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
* sstDisk=vdb,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstSourcePort: 24007&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firewall / Subversion ====&lt;br /&gt;
If you are using our firewall scripts (libvirt-hooks based), you&#039;ll also have to upgrade subversion (on all the stoney cloud nodes):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/vms&lt;br /&gt;
svn upgrade&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/$(hostname -s)&lt;br /&gt;
svn upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regular Update ===&lt;br /&gt;
&lt;br /&gt;
Makes sure, your local portage tree is updated:&lt;br /&gt;
 emerge --sync&lt;br /&gt;
&lt;br /&gt;
Now you can make sure, that you&#039;ve got the current stoney cloud version installed:&lt;br /&gt;
 emerge -KuDva virtual/foss-cloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
&lt;br /&gt;
Total: 0 packages, Size of downloads: 0 kB&lt;br /&gt;
&lt;br /&gt;
 * virtual/foss-cloud-1.2.10.4&lt;br /&gt;
&lt;br /&gt;
Would you like to add these packages to your world favorites? [Yes/No] &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have updated you stoney cloud, you might want to sanely update your configuration files after emerging new packages (including updates):&lt;br /&gt;
 dispatch-conf&lt;br /&gt;
&lt;br /&gt;
== Installing Software Examples ==&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages. So if you don&#039;t pass any special parameters to the emerge command, the binary package (if it exists) will be used.&lt;br /&gt;
&lt;br /&gt;
=== Binary Package ===&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages, which can be seen with &#039;&#039;&#039;[binary   R    ]&#039;&#039;&#039; output.&lt;br /&gt;
 emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[binary   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] no&lt;br /&gt;
&lt;br /&gt;
Quitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Force Non-Binary Package ===&lt;br /&gt;
If you force a non-binary package, the output will be in the form of &#039;&#039;&#039;[ebuild   R    ]&#039;&#039;&#039;.&lt;br /&gt;
 FEATURES=&amp;quot;-getbinpkg&amp;quot; emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] app-arch/cpio-2.11  USE=&amp;quot;nls&amp;quot; 995 kB&lt;br /&gt;
[ebuild   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 4,523 kB&lt;br /&gt;
&lt;br /&gt;
Total: 2 packages (1 new, 1 reinstall), Size of downloads: 5,518 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== No Binary Package Exists ===&lt;br /&gt;
The following example shows you a package with no existing binary package, therefore the package must be compiled on the fly, shown with &#039;&#039;&#039;[ebuild  N     ]&#039;&#039;&#039;.&lt;br /&gt;
 emerge -va htop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] sys-process/htop-1.0.2  USE=&amp;quot;unicode -openvz -vserver&amp;quot; 380 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 new), Size of downloads: 380 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multi-Node Installation ==&lt;br /&gt;
Follow the [[Multi-Node_Installation#Specialized_Installation | Specialized Installation]] Guide.&lt;br /&gt;
&lt;br /&gt;
== Basic Testing Steps ==&lt;br /&gt;
Get your stoney cloud image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=1.2.10.7        # stoney cloud version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/iso/foss-cloud-installer-${version}.iso&lt;br /&gt;
chown apache:vm-storage foss-cloud-installer-${version}.iso&lt;br /&gt;
chmod 644 foss-cloud-installer-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the [http://www.sysresccd.org/SystemRescueCd_Homepage SystemRescueCd] ISO:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=4.5.1       # SystemRescueCd version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
&lt;br /&gt;
wget http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/${version}/systemrescuecd-x86-${version}.iso&lt;br /&gt;
&lt;br /&gt;
# Check that the file was downloaded correctly&lt;br /&gt;
echo &amp;quot;93e689d218f412d0096da26053ea9828aa5dc7b6 systemrescuecd-x86-${version}.iso&amp;quot; | sha1sum -c -&lt;br /&gt;
&lt;br /&gt;
chown apache:vm-storage systemrescuecd-x86-${version}.iso&lt;br /&gt;
chmod 644 systemrescuecd-x86-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Fedora ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=21        # Fedora version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/${version}/Server/x86_64/iso/Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chown apache:vm-storage Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chmod 644 Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lernstick (Test):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://www.imedias.ch/dateien/lernstick-testversion/lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chown apache:vm-storage lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chmod 644 lernstick_debian7_2013-12-12.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your debian image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=7.8.0        # Debian version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://cdimage.debian.org/debian-cd/${version}/amd64/iso-cd/debian-${version}-amd64-netinst.iso&lt;br /&gt;
chown apache:vm-storage debian-${version}-amd64-netinst.iso&lt;br /&gt;
chmod 644 debian-${version}-amd64-netinst.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu desktop image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu server image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-server-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Windows 2012 Server R2 ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://care.dlservice.microsoft.com/dl/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO -O windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chown apache:vm-storage windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chmod 644 windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need the newest Windows Drivers ISO image, visit http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/&lt;br /&gt;
&lt;br /&gt;
Set three network ranges under https://192.168.140.10/vm-manager/subnet/index.html&lt;br /&gt;
 192.168.140.64&lt;br /&gt;
 26&lt;br /&gt;
 Template Range&lt;br /&gt;
 template&lt;br /&gt;
&lt;br /&gt;
 192.168.140.128&lt;br /&gt;
 26&lt;br /&gt;
 Persistent Range&lt;br /&gt;
 persistent&lt;br /&gt;
&lt;br /&gt;
 192.168.140.192&lt;br /&gt;
 26&lt;br /&gt;
 Dynamic Range&lt;br /&gt;
 dynamic&lt;br /&gt;
&lt;br /&gt;
Add the three newly creates network ranges to the VM-Pools under https://192.168.140.10/vm-manager/vmPool/index.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Profile under https://192.168.140.10/vm-manager/vmProfile/create.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Template under https://192.168.140.10/vm-manager/vmTemplate/create.html and install a basic operating system.&lt;br /&gt;
&lt;br /&gt;
Create a persistent Virtual Machine from the newly created Virtual Machine Template.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:stoney cloud]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4564</id>
		<title>stoney cloud: Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4564"/>
		<updated>2015-03-17T08:59:20Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Basic Testing Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This guide explains, what you need to do during the installation of your Multi-Node Installation.&lt;br /&gt;
&lt;br /&gt;
== Prepare your stoney cloud installation for the update ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;= 1.2.10.3 ===&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;productive&#039;&#039;&#039; (releases) stoney cloud Installation, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;test&#039;&#039;&#039; (pre-releases) stoney cloud Installation instead, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Even a pre-release ISO may result in a stable installation, depending on when it was generated in the release cycle. Please verify by executing &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/usr/portage&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud&amp;lt;/code&amp;gt; whether this is the case, and [[stoney_cloud:_Switch_to_testing_branch|switch to the testing branch]] if needed (that is: if the branch displayed does not contain the words &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt;. If the branch is empty, that means you have a brand new installation without anything yet. In that case, directly check the configuration files &amp;lt;code&amp;gt;/usr/portage/.git/config&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud/.git/config&amp;lt;/code&amp;gt; to see which branch it would check out upon &amp;lt;code&amp;gt;emerge --sync&amp;lt;/code&amp;gt; and from where.).&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt;= 1.2.10.4 ===&lt;br /&gt;
&lt;br /&gt;
Execute the following command to register the binary package mirror (since for now there will be only pre-releases, but with better quality than FOSS-Cloud releases):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&lt;br /&gt;
# Disable the SYNC from rsync since newer portage versions otherwise won&#039;t accept a portage tree via git&lt;br /&gt;
sed -i -e &#039;s|^SYNC|#SYNC|&#039; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
=== Updating from 1.2.10.7 or earlier to 1.2.10.8_rc4 or newer ===&lt;br /&gt;
&lt;br /&gt;
A complete rebuild of all packages was required, therefore the update guide is different:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --sync&lt;br /&gt;
&lt;br /&gt;
emerge -eK world -va&lt;br /&gt;
 &lt;br /&gt;
# sst-libvirt-hooks is not part of the stoney-cloud anymore since it requires further configuration&lt;br /&gt;
# make sure that it still gets updated and not removed later, if you have it installed and enabled&lt;br /&gt;
emerge -K app-emulation/sst-libvirt-hooks&lt;br /&gt;
 &lt;br /&gt;
dispatch-conf&lt;br /&gt;
 &lt;br /&gt;
# Switch runtime switchable options&lt;br /&gt;
eselect python set python3.3&lt;br /&gt;
eselect php set cli php5.5&lt;br /&gt;
eselect php set apache2 php5.5&lt;br /&gt;
gcc-config x86_64-pc-linux-gnu-4.7.3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the dispatch-conf the following may appear:&lt;br /&gt;
* /etc/libvirt/libvirt.conf: you may get the suggestion to remove almost all content. Quit dispatch-conf and do: &amp;lt;code&amp;gt;rm /etc/libvirt/._mrg*&amp;lt;/code&amp;gt; and start dispatch-conf again.&lt;br /&gt;
* /etc/libvirt/libvirt.conf: merge all whitespace/comment changes but make sure you don&#039;t overwrite the &amp;lt;code&amp;gt;listen_addr&amp;lt;/code&amp;gt;&lt;br /&gt;
* /etc/portage/make.conf: merge all changes beside the &amp;lt;code&amp;gt;PORTAGE_BINHOST&amp;lt;/code&amp;gt;&lt;br /&gt;
* /var/www/localhost/htdocs/vm-manager/vm_config.php: merge the versions, newly added lines and comments. Avoid changes on sstSourceHostName array&lt;br /&gt;
&lt;br /&gt;
To make sure everything works, reboot and then cleanup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --depclean -va&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If the cleanup fails stating that &amp;lt;code&amp;gt;Locale-gettext&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dev-libs/boost&amp;lt;/code&amp;gt; depends on some version of perl, reinstall that package manually once and try again:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge -1Kva dev-libs/boost Locale-gettext&lt;br /&gt;
&lt;br /&gt;
# same for autoconf-/automake-wrapper if host was used to build stuff:&lt;br /&gt;
emerge -1K sys-devel/autoconf-wrapper sys-devel/automake-wrapper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;WARNING&#039;&#039;&#039;: this also removes the current kernel. If you want to play it safe, reboot first, then depclean, then reboot again&lt;br /&gt;
* Rebuilde separately installed perl modules and remove traces of the old perl version:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
perl-cleaner --all -- -va&lt;br /&gt;
rm -rf /usr/lib64/perl5/{vendor_perl,}/5.12.4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Emulator ====&lt;br /&gt;
* u=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,o=stepping-stone,c=ch&lt;br /&gt;
&lt;br /&gt;
Change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-kvm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstEmulator: /usr/bin/qemu-system-x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Source Port ====&lt;br /&gt;
* sstDisk=vda,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
* sstDisk=vdb,ou=devices,sstVirtualMachine=*,ou=virtual machines,ou=virtualization,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstSourcePort: 24007&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firewall / Subversion ====&lt;br /&gt;
If you are using our firewall scripts (libvirt-hooks based), you&#039;ll also have to upgrade subversion (on all the stoney cloud nodes):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/vms&lt;br /&gt;
svn upgrade&lt;br /&gt;
cd /usr/local/scripts/netfilter/local/chains/$(hostname -s)&lt;br /&gt;
svn upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regular Update ===&lt;br /&gt;
&lt;br /&gt;
Makes sure, your local portage tree is updated:&lt;br /&gt;
 emerge --sync&lt;br /&gt;
&lt;br /&gt;
Now you can make sure, that you&#039;ve got the current stoney cloud version installed:&lt;br /&gt;
 emerge -KuDva virtual/foss-cloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
&lt;br /&gt;
Total: 0 packages, Size of downloads: 0 kB&lt;br /&gt;
&lt;br /&gt;
 * virtual/foss-cloud-1.2.10.4&lt;br /&gt;
&lt;br /&gt;
Would you like to add these packages to your world favorites? [Yes/No] &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have updated you stoney cloud, you might want to sanely update your configuration files after emerging new packages (including updates):&lt;br /&gt;
 dispatch-conf&lt;br /&gt;
&lt;br /&gt;
== Installing Software Examples ==&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages. So if you don&#039;t pass any special parameters to the emerge command, the binary package (if it exists) will be used.&lt;br /&gt;
&lt;br /&gt;
=== Binary Package ===&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages, which can be seen with &#039;&#039;&#039;[binary   R    ]&#039;&#039;&#039; output.&lt;br /&gt;
 emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[binary   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] no&lt;br /&gt;
&lt;br /&gt;
Quitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Force Non-Binary Package ===&lt;br /&gt;
If you force a non-binary package, the output will be in the form of &#039;&#039;&#039;[ebuild   R    ]&#039;&#039;&#039;.&lt;br /&gt;
 FEATURES=&amp;quot;-getbinpkg&amp;quot; emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] app-arch/cpio-2.11  USE=&amp;quot;nls&amp;quot; 995 kB&lt;br /&gt;
[ebuild   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 4,523 kB&lt;br /&gt;
&lt;br /&gt;
Total: 2 packages (1 new, 1 reinstall), Size of downloads: 5,518 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== No Binary Package Exists ===&lt;br /&gt;
The following example shows you a package with no existing binary package, therefore the package must be compiled on the fly, shown with &#039;&#039;&#039;[ebuild  N     ]&#039;&#039;&#039;.&lt;br /&gt;
 emerge -va htop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] sys-process/htop-1.0.2  USE=&amp;quot;unicode -openvz -vserver&amp;quot; 380 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 new), Size of downloads: 380 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multi-Node Installation ==&lt;br /&gt;
Follow the [[Multi-Node_Installation#Specialized_Installation | Specialized Installation]] Guide.&lt;br /&gt;
&lt;br /&gt;
== Basic Testing Steps ==&lt;br /&gt;
Get your stoney cloud image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=1.2.10.7        # stoney cloud version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/iso/foss-cloud-installer-${version}.iso&lt;br /&gt;
chown apache:vm-storage foss-cloud-installer-${version}.iso&lt;br /&gt;
chmod 644 foss-cloud-installer-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the [http://www.sysresccd.org/SystemRescueCd_Homepage SystemRescueCd] ISO:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=4.5.1       # SystemRescueCd version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
&lt;br /&gt;
wget http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/${version}/systemrescuecd-x86-${version}.iso&lt;br /&gt;
&lt;br /&gt;
chown apache:vm-storage systemrescuecd-x86-${version}.iso&lt;br /&gt;
chmod 644 systemrescuecd-x86-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Fedora ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=21        # Fedora version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/${version}/Server/x86_64/iso/Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chown apache:vm-storage Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
chmod 644 Fedora-Server-netinst-x86_64-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lernstick (Test):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://www.imedias.ch/dateien/lernstick-testversion/lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chown apache:vm-storage lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chmod 644 lernstick_debian7_2013-12-12.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your debian image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=7.8.0        # Debian version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://cdimage.debian.org/debian-cd/${version}/amd64/iso-cd/debian-${version}-amd64-netinst.iso&lt;br /&gt;
chown apache:vm-storage debian-${version}-amd64-netinst.iso&lt;br /&gt;
chmod 644 debian-${version}-amd64-netinst.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu desktop image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu server image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-server-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Windows 2012 Server R2 ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://care.dlservice.microsoft.com/dl/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO -O windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chown apache:vm-storage windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
chmod 644 windows_server_2012_r2_64bit_en.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need the newest Windows Drivers ISO image, visit http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/&lt;br /&gt;
&lt;br /&gt;
Set three network ranges under https://192.168.140.10/vm-manager/subnet/index.html&lt;br /&gt;
 192.168.140.64&lt;br /&gt;
 26&lt;br /&gt;
 Template Range&lt;br /&gt;
 template&lt;br /&gt;
&lt;br /&gt;
 192.168.140.128&lt;br /&gt;
 26&lt;br /&gt;
 Persistent Range&lt;br /&gt;
 persistent&lt;br /&gt;
&lt;br /&gt;
 192.168.140.192&lt;br /&gt;
 26&lt;br /&gt;
 Dynamic Range&lt;br /&gt;
 dynamic&lt;br /&gt;
&lt;br /&gt;
Add the three newly creates network ranges to the VM-Pools under https://192.168.140.10/vm-manager/vmPool/index.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Profile under https://192.168.140.10/vm-manager/vmProfile/create.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Template under https://192.168.140.10/vm-manager/vmTemplate/create.html and install a basic operating system.&lt;br /&gt;
&lt;br /&gt;
Create a persistent Virtual Machine from the newly created Virtual Machine Template.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:stoney cloud]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=Talk:stoney_core:_REST_API&amp;diff=4461</id>
		<title>Talk:stoney core: REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=Talk:stoney_core:_REST_API&amp;diff=4461"/>
		<updated>2015-01-08T15:20:22Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Fragen / Inkonsistenzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fragen / Inkonsistenzen =&lt;br /&gt;
&lt;br /&gt;
* Wir haben im Header eine Location. Im Body manchmal ja, manchmal nein.&lt;br /&gt;
** Gehört die Location in die Body Response rein? Falls ja:&lt;br /&gt;
*** Location müsste bei Update auch nicht hochgeschrieben werden?&lt;br /&gt;
*** es kommt drauf an: bei einer Collection/Such-Resultat/Liste sollte bei jedem einzelnen Element eine Location mitgegeben werden unter welchem das (vollständige) Element abgerufen werden kann. Als Teil eines Elements macht es meistens keinen Sinn. Im Header sollte es nur als Antwort vom Server kommen bei einem POST-Request (also beim Erstellen einer neuen Ressource) zusammen mit einem 201, siehe [http://en.wikipedia.org/wiki/HTTP_location Wikipedia] --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** ACK --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:18, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Update&lt;br /&gt;
** Statt leerem Body wäre hier eine Antwort logisch, wie bei der Kreierung.&lt;br /&gt;
*** Die Antwort ist gemäss REST mit dem Code 200 bereits gegeben. Vielleicht auch hier 204 verwenden stattdessen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** Ja, strikt gsehen müsste hier 204 zurückkommen. Inhalt brauch es meinern Meinung nach nicht, beim Update ist ja die Location und Id, im gegensatzt zu Create, bereits bekannt.  --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:18, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* http://wiki.stoney-cloud.org/wiki/stoney_core:_People_Resource_-_REST_API#People_collection_retrieval_response_message&lt;br /&gt;
** Location ist definiert, jedoch im Example nicht drin und entsprechend auch nicht umgesetzt.&lt;br /&gt;
** Location würde in diesem Falle dem &amp;quot;current&amp;quot; entsprechen (zwischen &amp;quot;pre&amp;quot; und &amp;quot;next&amp;quot;).&lt;br /&gt;
** Gemäss HTTP Protokoll auch nicht vorgesehen. Fehler in der Definition --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Caching Controls: Manchmal kommt &amp;quot;Cache-Control: no-cache&amp;quot; zurück, manchmal &amp;quot;Cache-Control: none, private&amp;quot;.&lt;br /&gt;
** ich vermute dass hier der Webserver noch was selbst macht --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* the service must recognize ETag, Last-Modified and Cache-Control: none provided by the client and act accordingly. &lt;br /&gt;
** Machen wir überhaupt etwas mit dem &amp;quot;Cache-Control: none&amp;quot;? Müsste dies nicht eh der Default-Wert sein?&lt;br /&gt;
&lt;br /&gt;
* Mit belongsToResellerId und belongsToCustomerId sind wir inkonsequent. Manchmal haben wir eine belongsToResellerId, manchmal nicht.&lt;br /&gt;
&lt;br /&gt;
* Relations (queries/scoping): Haben wir nicht getestet!&lt;br /&gt;
** /v1/resellers/4000001/customers -&amp;gt; collection resource (all customers of reseller with uid=4000001) &lt;br /&gt;
** /v1/resellers/4000001/customers/4000002 -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001) &lt;br /&gt;
** /v1/customers?belongsToResellerUID=4000001 -&amp;gt; collection resource (all customers of reseller with uid=4000001) &lt;br /&gt;
** /v1/customers/4000002 -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001) &lt;br /&gt;
&lt;br /&gt;
* Wollen wir zukünftig statt zuwenig Berechtigungen immer einen leeren JSON Wert zurück geben? Ähnlich wie bei der Suche, wenn sie keine Ergebnisse findet.&lt;br /&gt;
** Sonst konkret definieren, was zurück kommen muss.&lt;br /&gt;
** Bei einer Collection: ja. (tun wir das nicht bereits?). Bei einem Element muss ein Fehlerwert zurückgegeben werden. Ich hätte hier gerne jedoch 404 Not Found anstatt Permission Denied. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Das ist bereits definiert [[stoney_core:_REST_API#Error_codes_and_responses|403 (Forbidden) mit einem JSON error object]] welches weitere Details liefert. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:10, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Meiner Meinung nach müsste gemäss Spezifikation (On success (200) an empty response message body will be returned, otherwise ...) bei einer Löschung ein leerer JSON String und nicht &amp;quot;{ &amp;quot;success&amp;quot;: 1 }  zurück gegeben werden.&lt;br /&gt;
** http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_Success&lt;br /&gt;
** Wir müssten eigentlich &amp;quot;204 No Content&amp;quot; erhalten:&lt;br /&gt;
*** The server successfully processed the request, but is not returning any content. Usually used as a response to a successful delete request.&lt;br /&gt;
** Bei &amp;quot;200 OK&amp;quot; käme sonst &amp;quot;In a POST request the response will contain an entity describing or containing the result of the action.&amp;quot; zurück.&lt;br /&gt;
*** In diesem Falle würde ich eher &amp;quot;{ &amp;quot;Deletion successful&amp;quot;: 1 } erwarten.&lt;br /&gt;
** Gemäss [http://stackoverflow.com/questions/2342579/http-status-code-for-update-and-delete Stackoverflow] ist sowohl 200 als 204 ok. Wir haben uns scheinbar für 200 entschieden. Ein Client wird vermutlich nur auf 200/204 prüfen und den Body sowieso ignorieren, von daher egal. Ich persönlich würde 204 nehmen damit wir keinen Text zurückgeben müssen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
*** ACK --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:20, 8 January 2015 (CET)&lt;br /&gt;
** Müssten wir nicht auch noch unterschiedliche Response Header zurückgeben? Wenn kein Body, benötige ich auch den Content-Header nicht ... Oder geht das zu weit? &lt;br /&gt;
&lt;br /&gt;
* Actions&lt;br /&gt;
** Den neuen HTTP Status Code &amp;quot;202 Accepted&amp;quot; einführen?&lt;br /&gt;
*** The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place.&lt;br /&gt;
*** Eine Location für die Status-Abfrage ist nötig! In Form einer Job-ID oder ähnlichem.&lt;br /&gt;
*** Ja, aber dafür benötigen wir das Framework dahinter. Im Moment würde ich das ignorieren und so tun als wäre die Aktion sofort und erfolgreich ausgeführt worden. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** Finde ich gefährlich, der Client macht weiter obschon es das Objekt noch gar nicht gibt/geben wird (im Fehlerfall) --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:20, 8 January 2015 (CET)&lt;br /&gt;
**** die Alternative dazu ist dass wir uns bald für eine Messaging Middleware Lösung für Puppet/MCollective entscheiden und darauf aufbauend einen Job Server hochbringen. Das hiesse vermutlich: [http://www.rabbitmq.com/ RabbitMQ]/[https://github.com/videlalvaro/RabbitMqBundle RabbitMQ Symfony Bundle] und [http://www.celeryproject.org/ Celery] --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 18:03, 7 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Passwörter&lt;br /&gt;
** Bei Update (PUT) haben wir nirgendwo klar definiert, dass das Passwort nicht nötig ist.&lt;br /&gt;
** Es ist nirgendwo definiert, wie ein Passwort aussehen darf:&lt;br /&gt;
*** Minimale Länge?&lt;br /&gt;
*** Gross-/Kleinschreibung?&lt;br /&gt;
*** Sonderzeichen und/oder Zahlen?&lt;br /&gt;
** Fände es gut, wenn wir dies zentral vorgeben.&lt;br /&gt;
*** Wir können minimale Vorgaben dokumentieren, hängt aber ggf vom Authentication Backend ab. Allzuviel Zeit würde hier nicht investieren. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Eventuell lassen wir die Vorgaben via API abfragen? In diesem Falle müsste es ins stoney-core Modul gehören?&lt;br /&gt;
*** Zu aufwändig für den Nutzen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=Talk:stoney_core:_REST_API&amp;diff=4460</id>
		<title>Talk:stoney core: REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=Talk:stoney_core:_REST_API&amp;diff=4460"/>
		<updated>2015-01-08T15:18:29Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Fragen / Inkonsistenzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fragen / Inkonsistenzen =&lt;br /&gt;
&lt;br /&gt;
* Wir haben im Header eine Location. Im Body manchmal ja, manchmal nein.&lt;br /&gt;
** Gehört die Location in die Body Response rein? Falls ja:&lt;br /&gt;
*** Location müsste bei Update auch nicht hochgeschrieben werden?&lt;br /&gt;
*** es kommt drauf an: bei einer Collection/Such-Resultat/Liste sollte bei jedem einzelnen Element eine Location mitgegeben werden unter welchem das (vollständige) Element abgerufen werden kann. Als Teil eines Elements macht es meistens keinen Sinn. Im Header sollte es nur als Antwort vom Server kommen bei einem POST-Request (also beim Erstellen einer neuen Ressource) zusammen mit einem 201, siehe [http://en.wikipedia.org/wiki/HTTP_location Wikipedia] --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** ACK --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:18, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Update&lt;br /&gt;
** Statt leerem Body wäre hier eine Antwort logisch, wie bei der Kreierung.&lt;br /&gt;
*** Die Antwort ist gemäss REST mit dem Code 200 bereits gegeben. Vielleicht auch hier 204 verwenden stattdessen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** Ja, strikt gsehen müsste hier 204 zurückkommen. Inhalt brauch es meinern Meinung nach nicht, beim Update ist ja die Location und Id, im gegensatzt zu Create, bereits bekannt.  --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:18, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* http://wiki.stoney-cloud.org/wiki/stoney_core:_People_Resource_-_REST_API#People_collection_retrieval_response_message&lt;br /&gt;
** Location ist definiert, jedoch im Example nicht drin und entsprechend auch nicht umgesetzt.&lt;br /&gt;
** Location würde in diesem Falle dem &amp;quot;current&amp;quot; entsprechen (zwischen &amp;quot;pre&amp;quot; und &amp;quot;next&amp;quot;).&lt;br /&gt;
** Gemäss HTTP Protokoll auch nicht vorgesehen. Fehler in der Definition --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Caching Controls: Manchmal kommt &amp;quot;Cache-Control: no-cache&amp;quot; zurück, manchmal &amp;quot;Cache-Control: none, private&amp;quot;.&lt;br /&gt;
** ich vermute dass hier der Webserver noch was selbst macht --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* the service must recognize ETag, Last-Modified and Cache-Control: none provided by the client and act accordingly. &lt;br /&gt;
** Machen wir überhaupt etwas mit dem &amp;quot;Cache-Control: none&amp;quot;? Müsste dies nicht eh der Default-Wert sein?&lt;br /&gt;
&lt;br /&gt;
* Mit belongsToResellerId und belongsToCustomerId sind wir inkonsequent. Manchmal haben wir eine belongsToResellerId, manchmal nicht.&lt;br /&gt;
&lt;br /&gt;
* Relations (queries/scoping): Haben wir nicht getestet!&lt;br /&gt;
** /v1/resellers/4000001/customers -&amp;gt; collection resource (all customers of reseller with uid=4000001) &lt;br /&gt;
** /v1/resellers/4000001/customers/4000002 -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001) &lt;br /&gt;
** /v1/customers?belongsToResellerUID=4000001 -&amp;gt; collection resource (all customers of reseller with uid=4000001) &lt;br /&gt;
** /v1/customers/4000002 -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001) &lt;br /&gt;
&lt;br /&gt;
* Wollen wir zukünftig statt zuwenig Berechtigungen immer einen leeren JSON Wert zurück geben? Ähnlich wie bei der Suche, wenn sie keine Ergebnisse findet.&lt;br /&gt;
** Sonst konkret definieren, was zurück kommen muss.&lt;br /&gt;
** Bei einer Collection: ja. (tun wir das nicht bereits?). Bei einem Element muss ein Fehlerwert zurückgegeben werden. Ich hätte hier gerne jedoch 404 Not Found anstatt Permission Denied. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Das ist bereits definiert [[stoney_core:_REST_API#Error_codes_and_responses|403 (Forbidden) mit einem JSON error object]] welches weitere Details liefert. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:10, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Meiner Meinung nach müsste gemäss Spezifikation (On success (200) an empty response message body will be returned, otherwise ...) bei einer Löschung ein leerer JSON String und nicht &amp;quot;{ &amp;quot;success&amp;quot;: 1 }  zurück gegeben werden.&lt;br /&gt;
** http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_Success&lt;br /&gt;
** Wir müssten eigentlich &amp;quot;204 No Content&amp;quot; erhalten:&lt;br /&gt;
*** The server successfully processed the request, but is not returning any content. Usually used as a response to a successful delete request.&lt;br /&gt;
** Bei &amp;quot;200 OK&amp;quot; käme sonst &amp;quot;In a POST request the response will contain an entity describing or containing the result of the action.&amp;quot; zurück.&lt;br /&gt;
*** In diesem Falle würde ich eher &amp;quot;{ &amp;quot;Deletion successful&amp;quot;: 1 } erwarten.&lt;br /&gt;
** Gemäss [http://stackoverflow.com/questions/2342579/http-status-code-for-update-and-delete Stackoverflow] ist sowohl 200 als 204 ok. Wir haben uns scheinbar für 200 entschieden. Ein Client wird vermutlich nur auf 200/204 prüfen und den Body sowieso ignorieren, von daher egal. Ich persönlich würde 204 nehmen damit wir keinen Text zurückgeben müssen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Müssten wir nicht auch noch unterschiedliche Response Header zurückgeben? Wenn kein Body, benötige ich auch den Content-Header nicht ... Oder geht das zu weit? &lt;br /&gt;
&lt;br /&gt;
* Actions&lt;br /&gt;
** Den neuen HTTP Status Code &amp;quot;202 Accepted&amp;quot; einführen?&lt;br /&gt;
*** The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place.&lt;br /&gt;
*** Eine Location für die Status-Abfrage ist nötig! In Form einer Job-ID oder ähnlichem.&lt;br /&gt;
*** Ja, aber dafür benötigen wir das Framework dahinter. Im Moment würde ich das ignorieren und so tun als wäre die Aktion sofort und erfolgreich ausgeführt worden. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** die Alternative dazu ist dass wir uns bald für eine Messaging Middleware Lösung für Puppet/MCollective entscheiden und darauf aufbauend einen Job Server hochbringen. Das hiesse vermutlich: [http://www.rabbitmq.com/ RabbitMQ]/[https://github.com/videlalvaro/RabbitMqBundle RabbitMQ Symfony Bundle] und [http://www.celeryproject.org/ Celery] --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 18:03, 7 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Passwörter&lt;br /&gt;
** Bei Update (PUT) haben wir nirgendwo klar definiert, dass das Passwort nicht nötig ist.&lt;br /&gt;
** Es ist nirgendwo definiert, wie ein Passwort aussehen darf:&lt;br /&gt;
*** Minimale Länge?&lt;br /&gt;
*** Gross-/Kleinschreibung?&lt;br /&gt;
*** Sonderzeichen und/oder Zahlen?&lt;br /&gt;
** Fände es gut, wenn wir dies zentral vorgeben.&lt;br /&gt;
*** Wir können minimale Vorgaben dokumentieren, hängt aber ggf vom Authentication Backend ab. Allzuviel Zeit würde hier nicht investieren. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Eventuell lassen wir die Vorgaben via API abfragen? In diesem Falle müsste es ins stoney-core Modul gehören?&lt;br /&gt;
*** Zu aufwändig für den Nutzen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=Talk:stoney_core:_REST_API&amp;diff=4458</id>
		<title>Talk:stoney core: REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=Talk:stoney_core:_REST_API&amp;diff=4458"/>
		<updated>2015-01-08T15:10:34Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fragen / Inkonsistenzen =&lt;br /&gt;
&lt;br /&gt;
* Wir haben im Header eine Location. Im Body manchmal ja, manchmal nein.&lt;br /&gt;
** Gehört die Location in die Body Response rein? Falls ja:&lt;br /&gt;
*** Location müsste bei Update auch nicht hochgeschrieben werden?&lt;br /&gt;
*** es kommt drauf an: bei einer Collection/Such-Resultat/Liste sollte bei jedem einzelnen Element eine Location mitgegeben werden unter welchem das (vollständige) Element abgerufen werden kann. Als Teil eines Elements macht es meistens keinen Sinn. Im Header sollte es nur als Antwort vom Server kommen bei einem POST-Request (also beim Erstellen einer neuen Ressource) zusammen mit einem 201, siehe [http://en.wikipedia.org/wiki/HTTP_location Wikipedia] --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Update&lt;br /&gt;
** Statt leerem Body wäre hier eine Antwort logisch, wie bei der Kreierung.&lt;br /&gt;
*** Die Antwort ist gemäss REST mit dem Code 200 bereits gegeben. Vielleicht auch hier 204 verwenden stattdessen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* http://wiki.stoney-cloud.org/wiki/stoney_core:_People_Resource_-_REST_API#People_collection_retrieval_response_message&lt;br /&gt;
** Location ist definiert, jedoch im Example nicht drin und entsprechend auch nicht umgesetzt.&lt;br /&gt;
** Location würde in diesem Falle dem &amp;quot;current&amp;quot; entsprechen (zwischen &amp;quot;pre&amp;quot; und &amp;quot;next&amp;quot;).&lt;br /&gt;
** Gemäss HTTP Protokoll auch nicht vorgesehen. Fehler in der Definition --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Caching Controls: Manchmal kommt &amp;quot;Cache-Control: no-cache&amp;quot; zurück, manchmal &amp;quot;Cache-Control: none, private&amp;quot;.&lt;br /&gt;
** ich vermute dass hier der Webserver noch was selbst macht --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* the service must recognize ETag, Last-Modified and Cache-Control: none provided by the client and act accordingly. &lt;br /&gt;
** Machen wir überhaupt etwas mit dem &amp;quot;Cache-Control: none&amp;quot;? Müsste dies nicht eh der Default-Wert sein?&lt;br /&gt;
&lt;br /&gt;
* Mit belongsToResellerId und belongsToCustomerId sind wir inkonsequent. Manchmal haben wir eine belongsToResellerId, manchmal nicht.&lt;br /&gt;
&lt;br /&gt;
* Relations (queries/scoping): Haben wir nicht getestet!&lt;br /&gt;
** /v1/resellers/4000001/customers -&amp;gt; collection resource (all customers of reseller with uid=4000001) &lt;br /&gt;
** /v1/resellers/4000001/customers/4000002 -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001) &lt;br /&gt;
** /v1/customers?belongsToResellerUID=4000001 -&amp;gt; collection resource (all customers of reseller with uid=4000001) &lt;br /&gt;
** /v1/customers/4000002 -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001) &lt;br /&gt;
&lt;br /&gt;
* Wollen wir zukünftig statt zuwenig Berechtigungen immer einen leeren JSON Wert zurück geben? Ähnlich wie bei der Suche, wenn sie keine Ergebnisse findet.&lt;br /&gt;
** Sonst konkret definieren, was zurück kommen muss.&lt;br /&gt;
** Bei einer Collection: ja. (tun wir das nicht bereits?). Bei einem Element muss ein Fehlerwert zurückgegeben werden. Ich hätte hier gerne jedoch 404 Not Found anstatt Permission Denied. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Das ist bereits definiert [[stoney_core:_REST_API#Error_codes_and_responses|403 (Forbidden) mit einem JSON error object]] welches weitere Details liefert. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 16:10, 8 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Meiner Meinung nach müsste gemäss Spezifikation (On success (200) an empty response message body will be returned, otherwise ...) bei einer Löschung ein leerer JSON String und nicht &amp;quot;{ &amp;quot;success&amp;quot;: 1 }  zurück gegeben werden.&lt;br /&gt;
** http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_Success&lt;br /&gt;
** Wir müssten eigentlich &amp;quot;204 No Content&amp;quot; erhalten:&lt;br /&gt;
*** The server successfully processed the request, but is not returning any content. Usually used as a response to a successful delete request.&lt;br /&gt;
** Bei &amp;quot;200 OK&amp;quot; käme sonst &amp;quot;In a POST request the response will contain an entity describing or containing the result of the action.&amp;quot; zurück.&lt;br /&gt;
*** In diesem Falle würde ich eher &amp;quot;{ &amp;quot;Deletion successful&amp;quot;: 1 } erwarten.&lt;br /&gt;
** Gemäss [http://stackoverflow.com/questions/2342579/http-status-code-for-update-and-delete Stackoverflow] ist sowohl 200 als 204 ok. Wir haben uns scheinbar für 200 entschieden. Ein Client wird vermutlich nur auf 200/204 prüfen und den Body sowieso ignorieren, von daher egal. Ich persönlich würde 204 nehmen damit wir keinen Text zurückgeben müssen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Actions&lt;br /&gt;
** Den neuen HTTP Status Code &amp;quot;202 Accepted&amp;quot; einführen?&lt;br /&gt;
*** The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place.&lt;br /&gt;
*** Eine Location für die Status-Abfrage ist nötig! In Form einer Job-ID oder ähnlichem.&lt;br /&gt;
*** Ja, aber dafür benötigen wir das Framework dahinter. Im Moment würde ich das ignorieren und so tun als wäre die Aktion sofort und erfolgreich ausgeführt worden. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
**** die Alternative dazu ist dass wir uns bald für eine Messaging Middleware Lösung für Puppet/MCollective entscheiden und darauf aufbauend einen Job Server hochbringen. Das hiesse vermutlich: [http://www.rabbitmq.com/ RabbitMQ]/[https://github.com/videlalvaro/RabbitMqBundle RabbitMQ Symfony Bundle] und [http://www.celeryproject.org/ Celery] --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 18:03, 7 January 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
* Passwörter&lt;br /&gt;
** Bei Update (PUT) haben wir nirgendwo klar definiert, dass das Passwort nicht nötig ist.&lt;br /&gt;
** Es ist nirgendwo definiert, wie ein Passwort aussehen darf:&lt;br /&gt;
*** Minimale Länge?&lt;br /&gt;
*** Gross-/Kleinschreibung?&lt;br /&gt;
*** Sonderzeichen und/oder Zahlen?&lt;br /&gt;
** Fände es gut, wenn wir dies zentral vorgeben.&lt;br /&gt;
*** Wir können minimale Vorgaben dokumentieren, hängt aber ggf vom Authentication Backend ab. Allzuviel Zeit würde hier nicht investieren. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;br /&gt;
** Eventuell lassen wir die Vorgaben via API abfragen? In diesem Falle müsste es ins stoney-core Modul gehören?&lt;br /&gt;
*** Zu aufwändig für den Nutzen. --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 12:37, 5 January 2015 (CET)&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_mail:_Pre-sales_costumer_qualification_check_list&amp;diff=4449</id>
		<title>stoney mail: Pre-sales costumer qualification check list</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_mail:_Pre-sales_costumer_qualification_check_list&amp;diff=4449"/>
		<updated>2015-01-05T13:00:32Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: Chrigu moved page stoney mail: Pre-sales costumer qualification check list to stoney mail: Pre-sales customer qualification check list: corrected typo within title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[stoney mail: Pre-sales customer qualification check list]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_mail:_Pre-sales_customer_qualification_check_list&amp;diff=4448</id>
		<title>stoney mail: Pre-sales customer qualification check list</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_mail:_Pre-sales_customer_qualification_check_list&amp;diff=4448"/>
		<updated>2015-01-05T13:00:31Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: Chrigu moved page stoney mail: Pre-sales costumer qualification check list to stoney mail: Pre-sales customer qualification check list: corrected typo within title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
We need a presales costumer qualification check list, which gathers all the necessary information to be able to provision an new mail domain for a customer of a reseller.&lt;br /&gt;
&lt;br /&gt;
= Checklist =&lt;br /&gt;
== Reseller ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Organisation:                &amp;lt;ORGANISATION&amp;gt;                     stepping stone GmbH&lt;br /&gt;
Contact Gender:              &amp;lt;GENDER&amp;gt;                           m&lt;br /&gt;
Contact:                     &amp;lt;NAME&amp;gt; &amp;lt;SURNAME&amp;gt;                   Michael Eichenberger&lt;br /&gt;
Address:                     &amp;lt;ADDRESS&amp;gt;                          Neufeldstrasse 9&lt;br /&gt;
                             &amp;lt;COUNTRY&amp;gt;-&amp;lt;ZIP&amp;gt; &amp;lt;LOCATION&amp;gt;         CH-3012 Bern&lt;br /&gt;
Mail:                        &amp;lt;MAIL&amp;gt;                             info@stepping-stone.ch&lt;br /&gt;
Telephone[1]:                &amp;lt;TELEPHONE&amp;gt;                        +41 31 332 53 63&lt;br /&gt;
Mobile[1]:                   &amp;lt;MOBILE&amp;gt;                           +41 76 392 36 23&lt;br /&gt;
Language:                    &amp;lt;LANGUAGE&amp;gt;                         en-GB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[1]:  Either telephone or mobile need to be present. Both numbers can exist together.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Groupware URL:               &amp;lt;GROUPWAREURL&amp;gt;                     groupware.stepping-stone.ch&lt;br /&gt;
Logout Redirect URL:         &amp;lt;LOGOUTREDIRECTURL&amp;gt;                www.stepping-stone.ch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customer ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Organisation:                &amp;lt;ORGANISATION&amp;gt;                     stepping stone GmbH&lt;br /&gt;
Contact Gender:              &amp;lt;GENDER&amp;gt;                           m&lt;br /&gt;
Contact:                     &amp;lt;NAME&amp;gt; &amp;lt;SURNAME&amp;gt;                   Michael Eichenberger&lt;br /&gt;
Address:                     &amp;lt;ADDRESS&amp;gt;                          Neufeldstrasse 9&lt;br /&gt;
                             &amp;lt;COUNTRY&amp;gt;-&amp;lt;ZIP&amp;gt; &amp;lt;LOCATION&amp;gt;         CH-3012 Bern&lt;br /&gt;
Mail:                        &amp;lt;MAIL&amp;gt;                             info@stepping-stone.ch&lt;br /&gt;
Telephone[1]:                &amp;lt;TELEPHONE&amp;gt;                        +41 31 332 53 63&lt;br /&gt;
Mobile[1]:                   &amp;lt;MOBILE&amp;gt;                           +41 76 392 36 23&lt;br /&gt;
Language:                    &amp;lt;LANGUAGE&amp;gt;                         en-GB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[1]:  Either telephone or mobile need to be present. Both numbers can exist together.&lt;br /&gt;
&lt;br /&gt;
== Mail Domain ==&lt;br /&gt;
Values needed for the set-up of a new Mail Domain:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mail Domain Name:            &amp;lt;MAILDOMAIN&amp;gt;                       example.com&lt;br /&gt;
Mail Domain Alias Name(s):   &amp;lt;MAILDOMAINALIAS&amp;gt;                  example.org (optional)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some default setting valid for this domain.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Default Language:            &amp;lt;LANGUAGE&amp;gt;                         de-CH, de-DE, en-GB, en-US, fr-CH, fr-FR (more languages can be added when needed)&lt;br /&gt;
Default Mailbox Size:        &amp;lt;MAILBOXSIZE&amp;gt;                      100 Megabyte (in 100 Megabyte steps)&lt;br /&gt;
Default with Groupware:      &amp;lt;GROUPWARE&amp;gt;                        yes or no, web mail access is always included&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you would like to use our Domain Name Servers:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Domain Name Server 1:        &amp;lt;DNS1&amp;gt;                             ns-01.stepping-stone.ch&lt;br /&gt;
Domain Name Server 2:        &amp;lt;DNS2&amp;gt;                             ns-02.stepping-stone.ch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use your own Domain Name Servers, the entries must look as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
example.com.        14400   IN      MX      10 mail.stepping-stone.ch.&lt;br /&gt;
example.com.        14400   IN      MX      20 mx-backup.stepping-stone.ch.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mail Account ==&lt;br /&gt;
=== Manual Provisioning of a single Mail Account ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Contact Gender:              &amp;lt;GENDER&amp;gt;                           m&lt;br /&gt;
Contact:                     &amp;lt;NAME&amp;gt; &amp;lt;SURNAME&amp;gt;                   Michael Eichenberger&lt;br /&gt;
Language:                    &amp;lt;LANGUAGE&amp;gt;                         en-GB&lt;br /&gt;
Mail:                        &amp;lt;MAIL&amp;gt;                             michael.eichenberger@stepping-stone.ch&lt;br /&gt;
Alias:                       &amp;lt;ALIAS&amp;gt;                            mei@stepping-stone.ch (optional, a semicolon separated list)&lt;br /&gt;
Password:                    &amp;lt;PASSWORD&amp;gt;                         verysecret (may be left free, in this case one will automatically be created for you)&lt;br /&gt;
Quota:                       &amp;lt;QUOTA&amp;gt;                            100 Megabyte (in 100 Megabyte steps)&lt;br /&gt;
Groupware:                   &amp;lt;GROUPWARE&amp;gt;                        yes (yes or no, web mail access is always included)&lt;br /&gt;
Forwards:                    &amp;lt;FORWARDS&amp;gt;                         - (optional, a semicolon separated list)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bulk load with CSV file ===&lt;br /&gt;
A CSV file in the following structure can be provided for multiple Mail Accounts:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name&amp;lt;br /&amp;gt;&lt;br /&gt;
!Surname&amp;lt;br /&amp;gt;&lt;br /&gt;
!Gender&amp;lt;br /&amp;gt;[f,m,n]&lt;br /&gt;
!Language&amp;lt;br /&amp;gt;[de-CH, de-DE, en-GB, en-US, fr-CH, fr-FR] x&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
!Mail&amp;lt;br /&amp;gt;&lt;br /&gt;
!Alias&amp;lt;br /&amp;gt;(semicolon separated)&lt;br /&gt;
!Password&amp;lt;br /&amp;gt;(will be generated if empty)&lt;br /&gt;
!Quota&amp;lt;br /&amp;gt; (in 100 Megabyte steps) x&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
!Groupware&amp;lt;br /&amp;gt;[yes,no] x&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
!Forwards&amp;lt;br /&amp;gt;(semicolon separated)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Michael&lt;br /&gt;
|Eichenberger&lt;br /&gt;
|m&lt;br /&gt;
|en-GB&lt;br /&gt;
|michael.eichenberger@stepping-stone.ch&lt;br /&gt;
|mei@stepping-stone.ch&lt;br /&gt;
|&lt;br /&gt;
|100&lt;br /&gt;
|yes&lt;br /&gt;
|support@stepping-stone.ch;info@stepping-stone.ch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Info&lt;br /&gt;
|stepping stone GmbH&lt;br /&gt;
|n&lt;br /&gt;
|de-CH&lt;br /&gt;
|info@stepping-stone.ch&lt;br /&gt;
|support@stepping-stone.ch;hosting@stepping-stonec.ch&lt;br /&gt;
|secret45&lt;br /&gt;
|300&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* x&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;: If the default values (Language, Mailbox Size and Groupware) are set, these columns can be left empty.&lt;br /&gt;
&lt;br /&gt;
The above table leads to the following CSV file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Michael,Eichenberger,m,en-GB,michael.eichenberger@stepping-stone.ch,mei@stepping-stone.ch,,100,yes,michael.eichenberger@gmail.com&lt;br /&gt;
Info,stepping stone GmbH,n,de-CH,info@stepping-stone.ch,support@stepping-stone.ch;hosting@stepping-stonec.ch,secret45,300,yes,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning via REST API ===&lt;br /&gt;
You can also use the [[stoney core: People Resource - REST API]] and the [[stoney mail: Mail Resource - REST API]] to provision a person and the the mail accounts.&lt;br /&gt;
&lt;br /&gt;
[[Category:stoney mail]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4404</id>
		<title>stoney cloud: Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_cloud:_Upgrade&amp;diff=4404"/>
		<updated>2014-11-11T12:19:33Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Updating from 1.2.10.7 or earlier to 1.2.10.8_rc4 or newer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This guide explains, what you need to do during the installation of your Multi-Node Installation.&lt;br /&gt;
&lt;br /&gt;
== Prepare your stoney cloud installation for the update ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;= 1.2.10.3 ===&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;productive&#039;&#039;&#039; (releases) stoney cloud Installation, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a &#039;&#039;&#039;test&#039;&#039;&#039; (pre-releases) stoney cloud Installation instead, execute the following command:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Even a pre-release ISO may result in a stable installation, depending on when it was generated in the release cycle. Please verify by executing &amp;lt;code&amp;gt;git branch&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/usr/portage&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud&amp;lt;/code&amp;gt; whether this is the case, and [[stoney_cloud:_Switch_to_testing_branch|switch to the testing branch]] if needed (that is: if the branch displayed does not contain the words &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt;. If the branch is empty, that means you have a brand new installation without anything yet. In that case, directly check the configuration files &amp;lt;code&amp;gt;/usr/portage/.git/config&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;/var/lib/layman/foss-cloud/.git/config&amp;lt;/code&amp;gt; to see which branch it would check out upon &amp;lt;code&amp;gt;emerge --sync&amp;lt;/code&amp;gt; and from where.).&lt;br /&gt;
&lt;br /&gt;
=== &amp;gt;= 1.2.10.4 ===&lt;br /&gt;
&lt;br /&gt;
Execute the following command to register the binary package mirror (since for now there will be only pre-releases, but with better quality than FOSS-Cloud releases):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;PORTAGE_BINHOST=&amp;quot;http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/packages&amp;quot;&#039; &amp;gt;&amp;gt; /etc/portage/make.conf&lt;br /&gt;
&lt;br /&gt;
# Disable the SYNC from rsync since newer portage versions otherwise won&#039;t accept a portage tree via git&lt;br /&gt;
sed -i -e &#039;s|^SYNC|#SYNC|&#039; /etc/portage/make.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
=== Updating from 1.2.10.7 or earlier to 1.2.10.8_rc4 or newer ===&lt;br /&gt;
&lt;br /&gt;
A complete rebuild of all packages was required, therefore the update guide is different:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --sync&lt;br /&gt;
&lt;br /&gt;
emerge -eK world -va&lt;br /&gt;
 &lt;br /&gt;
# sst-libvirt-hooks is not part of the stoney-cloud anymore since it requires further configuration&lt;br /&gt;
# make sure that it still gets updated and not removed later, if you have it installed and enabled&lt;br /&gt;
emerge -K app-emulation/sst-libvirt-hooks&lt;br /&gt;
 &lt;br /&gt;
dispatch-conf&lt;br /&gt;
 &lt;br /&gt;
# Switch runtime switchable options&lt;br /&gt;
eselect python set python3.3&lt;br /&gt;
eselect php set cli php5.5&lt;br /&gt;
eselect php set apache2 php5.5&lt;br /&gt;
gcc-config x86_64-pc-linux-gnu-4.7.3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During the dispatch-conf the following may appear:&lt;br /&gt;
* /etc/libvirt/libvirt.conf: you may get the suggestion to remove almost all content. Quit dispatch-conf and do: &amp;lt;code&amp;gt;rm /etc/libvirt/._mrg*&amp;lt;/code&amp;gt; and start dispatch-conf again.&lt;br /&gt;
* /etc/libvirt/libvirt.conf: merge all whitespace/comment changes but make sure you don&#039;t overwrite the &amp;lt;code&amp;gt;listen_addr&amp;lt;/code&amp;gt;&lt;br /&gt;
* /etc/portage/make.conf: merge all changes beside the &amp;lt;code&amp;gt;PORTAGE_BINHOST&amp;lt;/code&amp;gt;&lt;br /&gt;
* /var/www/localhost/htdocs/vm-manager/vm_config.php: merge the versions, newly added lines and comments. Avoid changes on sstSourceHostName array&lt;br /&gt;
&lt;br /&gt;
To make sure everything works, reboot and then cleanup:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge --depclean -va&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If the cleanup fails stating that &amp;lt;code&amp;gt;Locale-gettext&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dev-libs/boost&amp;lt;/code&amp;gt; depends on some version of perl, reinstall that package manually once and try again:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
emerge -1Kva dev-libs/boost Locale-gettext&lt;br /&gt;
&lt;br /&gt;
# same for autoconf-/automake-wrapper if host was used to build stuff:&lt;br /&gt;
emerge -1K sys-devel/autoconf-wrapper sys-devel/automake-wrapper&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;WARNING&#039;&#039;&#039;: this also removes the current kernel. If you want to play it safe, reboot first, then depclean, then reboot again&lt;br /&gt;
* Rebuilde separately installed perl modules and remove traces of the old perl version:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
perl-cleaner --all -- -va&lt;br /&gt;
rm -rf /usr/lib64/perl5/{vendor_perl,}/5.12.4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regular Update ===&lt;br /&gt;
&lt;br /&gt;
Makes sure, your local portage tree is updated:&lt;br /&gt;
 emerge --sync&lt;br /&gt;
&lt;br /&gt;
Now you can make sure, that you&#039;ve got the current stoney cloud version installed:&lt;br /&gt;
 emerge -KuDva virtual/foss-cloud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
&lt;br /&gt;
Total: 0 packages, Size of downloads: 0 kB&lt;br /&gt;
&lt;br /&gt;
 * virtual/foss-cloud-1.2.10.4&lt;br /&gt;
&lt;br /&gt;
Would you like to add these packages to your world favorites? [Yes/No] &#039;&#039;&#039;no&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have updated you stoney cloud, you might want to sanely update your configuration files after emerging new packages (including updates):&lt;br /&gt;
 dispatch-conf&lt;br /&gt;
&lt;br /&gt;
== Installing Software Examples ==&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages. So if you don&#039;t pass any special parameters to the emerge command, the binary package (if it exists) will be used.&lt;br /&gt;
&lt;br /&gt;
=== Binary Package ===&lt;br /&gt;
Per default, the stoney cloud expects you to install binary packages, which can be seen with &#039;&#039;&#039;[binary   R    ]&#039;&#039;&#039; output.&lt;br /&gt;
 emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[binary   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 5,295 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] no&lt;br /&gt;
&lt;br /&gt;
Quitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Force Non-Binary Package ===&lt;br /&gt;
If you force a non-binary package, the output will be in the form of &#039;&#039;&#039;[ebuild   R    ]&#039;&#039;&#039;.&lt;br /&gt;
 FEATURES=&amp;quot;-getbinpkg&amp;quot; emerge -va git&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] app-arch/cpio-2.11  USE=&amp;quot;nls&amp;quot; 995 kB&lt;br /&gt;
[ebuild   R    ] dev-vcs/git-1.7.12.4  USE=&amp;quot;blksha1 curl iconv nls pcre perl threads webdav -cgi -cvs -doc -emacs -gpg -gtk -highlight (-ppcsha1) -python -subversion {-test} -tk -xinetd&amp;quot; 4,523 kB&lt;br /&gt;
&lt;br /&gt;
Total: 2 packages (1 new, 1 reinstall), Size of downloads: 5,518 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== No Binary Package Exists ===&lt;br /&gt;
The following example shows you a package with no existing binary package, therefore the package must be compiled on the fly, shown with &#039;&#039;&#039;[ebuild  N     ]&#039;&#039;&#039;.&lt;br /&gt;
 emerge -va htop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local copy of remote index is up-to-date and will be used.&lt;br /&gt;
&lt;br /&gt;
These are the packages that would be merged, in order:&lt;br /&gt;
&lt;br /&gt;
Calculating dependencies... done!&lt;br /&gt;
[ebuild  N     ] sys-process/htop-1.0.2  USE=&amp;quot;unicode -openvz -vserver&amp;quot; 380 kB&lt;br /&gt;
&lt;br /&gt;
Total: 1 package (1 new), Size of downloads: 380 kB&lt;br /&gt;
&lt;br /&gt;
Would you like to merge these packages? [Yes/No] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multi-Node Installation ==&lt;br /&gt;
Follow the [[Multi-Node_Installation#Specialized_Installation | Specialized Installation]] Guide.&lt;br /&gt;
&lt;br /&gt;
== Basic Testing Steps ==&lt;br /&gt;
Get your stoney cloud image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=1.2.10.7        # stoney cloud version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://packages.stoney-cloud.org/stoney-cloud/pre-releases/1.2/iso/foss-cloud-installer-${version}.iso&lt;br /&gt;
chown apache:vm-storage foss-cloud-installer-${version}.iso&lt;br /&gt;
chmod 644 foss-cloud-installer-${version}.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a Fedora ISO image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://download.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso&lt;br /&gt;
chown apache:vm-storage Fedora-20-x86_64-netinst.iso&lt;br /&gt;
chmod 644 Fedora-20-x86_64-netinst.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lernstick (Test):&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://www.imedias.ch/dateien/lernstick-testversion/lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chown apache:vm-storage lernstick_debian7_2013-12-12.iso&lt;br /&gt;
chmod 644 lernstick_debian7_2013-12-12.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your debian image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=7.4.0        # debian version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://cdimage.debian.org/debian-cd/${version}/amd64/iso-cd/debian-${version}-amd64-netinst.iso&lt;br /&gt;
chown apache:vm-storage debian-${version}-amd64-netinst.iso&lt;br /&gt;
chmod 644 debian-${version}-amd64-netinst.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu desktop image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-desktop-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get your ubuntu server image:&lt;br /&gt;
&amp;lt;source lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
version=14.04        # ubuntu version&lt;br /&gt;
&lt;br /&gt;
cd /var/virtualization/iso-choosable/&lt;br /&gt;
wget http://mirror.switch.ch/ftp/mirror/ubuntu-cdimage/${version}/ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chown apache:vm-storage ubuntu-${version}-server-amd64.iso&lt;br /&gt;
chmod 644 ubuntu-${version}-server-amd64.iso&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set three network ranges under https://192.168.140.10/vm-manager/subnet/index.html&lt;br /&gt;
 192.168.140.64&lt;br /&gt;
 26&lt;br /&gt;
 Template Range&lt;br /&gt;
 template&lt;br /&gt;
&lt;br /&gt;
 192.168.140.128&lt;br /&gt;
 26&lt;br /&gt;
 Persistent Range&lt;br /&gt;
 persistent&lt;br /&gt;
&lt;br /&gt;
 192.168.140.192&lt;br /&gt;
 26&lt;br /&gt;
 Dynamic Range&lt;br /&gt;
 dynamic&lt;br /&gt;
&lt;br /&gt;
Add the three newly creates network ranges to the VM-Pools under https://192.168.140.10/vm-manager/vmPool/index.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Profile under https://192.168.140.10/vm-manager/vmProfile/create.html&lt;br /&gt;
&lt;br /&gt;
Create a Virtual Machine Template under https://192.168.140.10/vm-manager/vmTemplate/create.html and install a basic operating system.&lt;br /&gt;
&lt;br /&gt;
Create a persistent Virtual Machine from the newly created Virtual Machine Template.&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:stoney cloud]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_REST_API&amp;diff=3851</id>
		<title>stoney core: REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_REST_API&amp;diff=3851"/>
		<updated>2014-08-06T07:29:47Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Input validations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
= Entities, Roles and Relationships =&lt;br /&gt;
== Overview ==&lt;br /&gt;
Description, how everything works together.Entitlement, Access and Roles&lt;br /&gt;
&lt;br /&gt;
== Entities ==&lt;br /&gt;
An Entity is always a company or a person.&lt;br /&gt;
&lt;br /&gt;
=== Service Provider ===&lt;br /&gt;
A service provider is the owner of the stoney cloud installation. One or more employees of the the service provider must be [[#Super User | super users]]. &lt;br /&gt;
&lt;br /&gt;
=== Reseller(s) ===&lt;br /&gt;
A reseller sells services of the service provider as his own. He is responsible for the administration of his customers and their services.&lt;br /&gt;
&lt;br /&gt;
=== Customers(s) ===&lt;br /&gt;
A customer subscribes to services that the reseller sells. The customer can administrate his own people, employees and services.&lt;br /&gt;
&lt;br /&gt;
=== People ===&lt;br /&gt;
==== Person ====&lt;br /&gt;
A person belonging one or more resellers and one or more customers. Normally, a person would belong to one reseller and one customer.&lt;br /&gt;
&lt;br /&gt;
==== Employee ====&lt;br /&gt;
A person, which is employed by one or more resellers and/or one or more customers.&lt;br /&gt;
&lt;br /&gt;
==== Super User ====&lt;br /&gt;
A super user is a person which has the right to complete the REST API functionality. The stoney cloud is delivered with one active super user. See the  [[stoney_core:_OpenLDAP_directory_data_organisation#People_.28Superuser.29 | People (Superuser)]] description in the [[stoney core: OpenLDAP directory data organisation]].&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
The roles are not finalized yet.&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
The relationships are hierarchical:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Service Provider Person&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reseller Employee&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Customer Employee&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reseller Person&#039;&#039;&#039; and &#039;&#039;&#039;Customer Person&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The further down you go, the less rights a person has (this is currently independent from any existing roles, as these have not been finalized yet).&lt;br /&gt;
&lt;br /&gt;
=== Service Provider Person (SPP) ===&lt;br /&gt;
Definition of a Service Provider Person:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000002&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| -&lt;br /&gt;
| sstBelongsToUID&lt;br /&gt;
| 1&lt;br /&gt;
| Hidden (internal) attribute, that will lose it&#039;s meaning, when the roles are finalized. Makes a person a super user.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller (in this case), that the person is an employee of (multiple resellers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer (in this case), that the person is an employee of (multiple customers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Service Provider Person (SPP) Rights ====&lt;br /&gt;
A Service Provider Person can just about do anything. The following rights are unique for a Service Provider Person (SPP):&lt;br /&gt;
* SPP.00: &#039;&#039;&#039;Create a reseller&#039;&#039;&#039;: Can create a reseller.&lt;br /&gt;
* SPP.01: &#039;&#039;&#039;Retrieve all resellers&#039;&#039;&#039;: Can retrieve all resellers.&lt;br /&gt;
* SPP.02: &#039;&#039;&#039;Retrieve a reseller&#039;&#039;&#039;: Can retrieve a reseller.&lt;br /&gt;
* SPP.03: &#039;&#039;&#039;Update a reseller:&#039;&#039;&#039; Can update a reseller.&lt;br /&gt;
* SPP.04: &#039;&#039;&#039;Partly Update a reseller&#039;&#039;&#039;: Can partly update a reseller.&lt;br /&gt;
* SPP.05: &#039;&#039;&#039;Delete reseller&#039;&#039;&#039;: Can delete a reseller (if no customers, people or services are linked to the reseller).&lt;br /&gt;
* SPP.06: &#039;&#039;&#039;Create a person&#039;&#039;&#039;: Can create a person (and make them a super user, an employee of one or more reseller(s) and an employee of one or more reseller(s)).&lt;br /&gt;
* SPP.07: &#039;&#039;&#039;Retrieve all people&#039;&#039;&#039;: Can retrieve all people.&lt;br /&gt;
* SPP.08: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve a person.&lt;br /&gt;
* SPP.09: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update a person (including making them a super user, an employee of one or more reseller(s) and an employee of one or more reseller(s)).&lt;br /&gt;
* SPP.10: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update a person.&lt;br /&gt;
* SPP.11: &#039;&#039;&#039;Delete person&#039;&#039;&#039;: Can delete a person (if no services are linked to the person).&lt;br /&gt;
&lt;br /&gt;
=== Reseller Employee (RE) ===&lt;br /&gt;
Definition of a Reseller Employee (RE):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000003&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller (in this case), that the person is an employee of (multiple resellers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer (in this case), that the person is an employee of (multiple customers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Reseller Employee (RE) Rights ====&lt;br /&gt;
Sees the reseller they belong to, themselves, their own customers, people and their services. The following rights exist for a Reseller Employee (RE) and a Service Provider Person (SPP):&lt;br /&gt;
* RE.00: &#039;&#039;&#039;Retrieve some resellers&#039;&#039;&#039;: Can retrieve the reseller(s) they are an employee of.&lt;br /&gt;
* RE.01: &#039;&#039;&#039;Retrieve a reseller&#039;&#039;&#039;: Can retrieve one of the reseller(s) they are an employee of.&lt;br /&gt;
* RE.02: &#039;&#039;&#039;Update a reseller:&#039;&#039;&#039; Can update one of the reseller(s) they are an employee of.&lt;br /&gt;
* RE.03: &#039;&#039;&#039;Partly Update a reseller&#039;&#039;&#039;: Can partly update one of the reseller(s) they are an employee of.&lt;br /&gt;
&lt;br /&gt;
* RE.04: &#039;&#039;&#039;Create a customer&#039;&#039;&#039;: Can create a customer.&lt;br /&gt;
* RE.05: &#039;&#039;&#039;Retrieve all customers&#039;&#039;&#039;: Can retrieve all their customers.&lt;br /&gt;
* RE.06: &#039;&#039;&#039;Retrieve a customer&#039;&#039;&#039;: Can retrieve one of their customers.&lt;br /&gt;
* RE.07: &#039;&#039;&#039;Update a customer:&#039;&#039;&#039; Can update one of their customers.&lt;br /&gt;
* RE.08: &#039;&#039;&#039;Partly Update a customer&#039;&#039;&#039;: Can partly update one of their customers.&lt;br /&gt;
* RE.09: &#039;&#039;&#039;Delete customer&#039;&#039;&#039;: Can delete one of their customers (if no people or services are linked to the customer).&lt;br /&gt;
&lt;br /&gt;
* RE.10: &#039;&#039;&#039;Create a person&#039;&#039;&#039;: Can create a person (including making them an employee of their reseller(s) and of their customer(s)).&lt;br /&gt;
* RE.11: &#039;&#039;&#039;Retrieve all people&#039;&#039;&#039;: Can retrieve all their people (of their reseller(s) and their customer(s)).&lt;br /&gt;
* RE.12: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve one of their people (of their reseller(s) and their customer(s)).&lt;br /&gt;
* RE.13: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update a person (including making them an employee of their reseller(s) and of their customer(s)).&lt;br /&gt;
* RE.14: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update a person.&lt;br /&gt;
* RE.15: &#039;&#039;&#039;Delete person&#039;&#039;&#039;: Can delete a person (if no services are linked to the person).&lt;br /&gt;
&lt;br /&gt;
=== Customer Employee (CE) ===&lt;br /&gt;
Definition of a Customer Employee (CE):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000004&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000002&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000002&lt;br /&gt;
| Shows the customer (in this case), that the person is an employee of (multiple customers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Customer Employee (CE) Rights ====&lt;br /&gt;
Sees the customer they belong to, themselves, their own people and their services. The following rights exist for a Customer Employee (CE), a Reseller Employee (RE) and a Service Provider Person (SPP):&lt;br /&gt;
* CE.00: &#039;&#039;&#039;Retrieve some customers&#039;&#039;&#039;: Can retrieve the customer(s) they are an employee of.&lt;br /&gt;
* CE.01: &#039;&#039;&#039;Retrieve a customer&#039;&#039;&#039;: Can retrieve one of the customer(s) they are an employee of.&lt;br /&gt;
* CE.02: &#039;&#039;&#039;Update a customer:&#039;&#039;&#039; Can update one of the customer(s) they are an employee of.&lt;br /&gt;
* CE.03: &#039;&#039;&#039;Partly Update a customer&#039;&#039;&#039;: Can partly update one of the customer(s) they are an employee of.&lt;br /&gt;
&lt;br /&gt;
* CE.04: &#039;&#039;&#039;Create a person&#039;&#039;&#039;: Can create a person (including making them an employee of their customer(s)).&lt;br /&gt;
* CE.05: &#039;&#039;&#039;Retrieve all people&#039;&#039;&#039;: Can retrieve all their people (of their customer(s)).&lt;br /&gt;
* CE.06: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve one of their people (of their customer(s)).&lt;br /&gt;
* CE.07: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update a person (including making them an employee of their customer(s)).&lt;br /&gt;
* CE.08: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update a person.&lt;br /&gt;
* CE.09: &#039;&#039;&#039;Delete person&#039;&#039;&#039;: Can delete a person (if no services are linked to the person).&lt;br /&gt;
&lt;br /&gt;
=== Reseller Person (P) and Customer Person (P) ===&lt;br /&gt;
Definition of a Reseller Person (P) and Customer Person (P):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000005&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000002&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Reseller Person (P) and Customer Person (P) Rights ====&lt;br /&gt;
A Reseller Person (P) and Customer Person (P) act exactly the same. They see themselves and their own services.&lt;br /&gt;
Sees the customer they belong to, themselves, their own people and their services. The following rights exist for a Reseller Person (P), a Customer Person (P), a Customer Employee (CE), a Reseller Employee (RE) and a Service Provider Person (SPP):&lt;br /&gt;
* P.00: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve themselves.&lt;br /&gt;
* P.01: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update themselves.&lt;br /&gt;
* P.02: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update themselves.&lt;br /&gt;
&lt;br /&gt;
= REST API documentation =&lt;br /&gt;
=== Reserved Keywords ===&lt;br /&gt;
We have some special reserved keywords, which can no be used by the REST API:&lt;br /&gt;
* sort: Used for sorting.&lt;br /&gt;
* q: Full text search.&lt;br /&gt;
* page: Pagination.&lt;br /&gt;
&lt;br /&gt;
=== Base URI ===&lt;br /&gt;
The RESTful web service has to be accessible via a secure HTTP (HTTPS) base URI, for instance &amp;lt;code&amp;gt;https://api.example.com/v1&amp;lt;/code&amp;gt;.&lt;br /&gt;
The definition of the base URI is up to the provider of the service. The only requirements are the use of HTTPS and the presence of the service&#039;s version information, so that further changes are possible without breaking existing clients.&lt;br /&gt;
&lt;br /&gt;
=== Client authentication and authorization ===&lt;br /&gt;
The service needs to authenticate each client via HTTP basic authentication by a user name and a corresponding password. If a unauthenticated client tries to access the service, it will response with a &amp;lt;code&amp;gt;401&amp;lt;/code&amp;gt; (Unauthorized) HTTP [[#Error_codes_and_responses|error code]].&lt;br /&gt;
&lt;br /&gt;
Furthermore the service must retrieve the authenticated users role and object ownership and respect their respective value when returning collections and elements and acting on HTTP methods. If a client tries to get, modify or delete an element for which it is not authorized, the services will response with a &amp;lt;code&amp;gt;403&amp;lt;/code&amp;gt; (Forbidden) HTTP [[#Error_codes_and_responses|error code]] and includes a descriptive authorization validation message within the JSON error object.&lt;br /&gt;
&lt;br /&gt;
To solely authentication a person, use the resource described under [[stoney core: Authentication Resource - REST API]].&lt;br /&gt;
&lt;br /&gt;
=== Data interchange format ===&lt;br /&gt;
The service needs to accept and send all data in the JSON data interchange format via HTTP, encoded as UTF-8. Thus a client needs to accept and use the [http://tools.ietf.org/html/rfc4627 &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt;] media type. Further media types might be supported in the future.&lt;br /&gt;
&lt;br /&gt;
This results in the following required request and response headers:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Request header&lt;br /&gt;
! Response header&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: utf-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;Content-Type: application/json;charset=utf-8&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* If the client sends an &amp;lt;code&amp;gt;Accept&amp;lt;/code&amp;gt; header with an unsupported value (at the moment only &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt; is supported), the service will respond with a &amp;lt;code&amp;gt;406&amp;lt;/code&amp;gt; (Not Acceptable)  [[#Error codes and responses|error code]].&lt;br /&gt;
* If the client sends an &amp;lt;code&amp;gt;Accept-Charset&amp;lt;/code&amp;gt; header with an unsupported value (at the moment only &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt; is supported), the service will respond with a &amp;lt;code&amp;gt;406&amp;lt;/code&amp;gt; (Not Acceptable)  [[#Error codes and responses|error code]].&lt;br /&gt;
* If no &amp;lt;code&amp;gt;Accept&amp;lt;/code&amp;gt; header is sent, the server will use JSON, possibly pretty-printed and annotated.&lt;br /&gt;
* If no &amp;lt;code&amp;gt;Accept-Charset&amp;lt;/code&amp;gt; header is sent, the server send the response with &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt; as charset.&lt;br /&gt;
* If the client sends a &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; other than &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt; on a POST, PUT or PATCH request, the service will respond with a &amp;lt;code&amp;gt;415&amp;lt;/code&amp;gt; (Unsupported Media Type) [[#Error codes and responses|error code]].&lt;br /&gt;
* If the client sends invalid JSON, the service will response with a &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; (Bad Request) HTTP  [[#Error codes and responses|error code]] and a descriptive error message within the error object.&lt;br /&gt;
* When returning a &amp;lt;code&amp;gt;401&amp;lt;/code&amp;gt;, a proper &amp;lt;code&amp;gt;WWW-Authenticate&amp;lt;/code&amp;gt; header must be sent as well as documented in [http://tools.ietf.org/html/rfc7235#page-7 RFC7235 (or earlier HTTP 1.1/1.0 RFCs)].&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted, the [http://tools.ietf.org/wg/httpbis/ HTTPbis RFCs] always apply.&lt;br /&gt;
&lt;br /&gt;
Future extension:&lt;br /&gt;
Client may supply &amp;lt;code&amp;gt;application/vnd.org.stoney-cloud.api+json&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; to declare the requested schema/format of the data. This can then also be used to introduce additional versioning.&lt;br /&gt;
&lt;br /&gt;
=== Error codes and responses ===&lt;br /&gt;
The service returns appropriate HTTP status codes for every request, the following table lists the commonly used codes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! Text&lt;br /&gt;
! Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| OK&lt;br /&gt;
| Success.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 201&lt;br /&gt;
| Created&lt;br /&gt;
| A new resource was successfully created.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 400&lt;br /&gt;
| Bad Request&lt;br /&gt;
| The request was invalid. A descriptive error message will be sent within the response body.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| Not Found&lt;br /&gt;
| The requested resource could not be found but may be available again in the future.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 406&lt;br /&gt;
| Not Acceptable&lt;br /&gt;
| The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 401&lt;br /&gt;
| Unauthorized&lt;br /&gt;
| The client has failed or not yet tried to authenticate.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| Forbidden&lt;br /&gt;
| The client is not allowed to access the requested resource.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 415&lt;br /&gt;
| Unsupported Media Type&lt;br /&gt;
| The request entity has a media type which the server or resource does not support. For example, sending XML instead of JSON in a POST, PUT or PATCH method.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 422&lt;br /&gt;
| Unprocessable Entity&lt;br /&gt;
| The request was well-formed but was unable to be followed due to semantic errors. For example, a client sends a invalid field value (numbers instead of characters) in a JSON object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 428&lt;br /&gt;
| Precondition Required&lt;br /&gt;
| The client did not provide a proper ETag and/or Last-modification header when updating an object via PUT, see http://tools.ietf.org/html/rfc6585#section-3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 429&lt;br /&gt;
| Too Many Requests&lt;br /&gt;
| There were too many requests within a given time-period, see http://tools.ietf.org/html/rfc6585#section-4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 500&lt;br /&gt;
| Internal Server Error&lt;br /&gt;
| An internal error succoured. A descriptive error message will be sent within the response body.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 503&lt;br /&gt;
| Service Unavailable&lt;br /&gt;
| The service is temporary unavailable, because it is overloaded or down for maintenance&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally the service returns a descriptive error object in case a HTTP error was returned (4xx) within the message body of the response. An error object consists of an error code and a human readable error message, with further detailed error messages if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  &amp;quot;error&amp;quot;: { &lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;core&amp;quot;,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 123,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;Validation failed&amp;quot;&lt;br /&gt;
    &amp;quot;details&amp;quot; : [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;module&amp;quot;: &amp;quot;core&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot; : 5432,&lt;br /&gt;
        &amp;quot;field&amp;quot; : &amp;quot;firstName&amp;quot;,&lt;br /&gt;
        &amp;quot;message&amp;quot; : &amp;quot;First name cannot be longer than 35 characters&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;module&amp;quot;: &amp;quot;core&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot; : 5123,&lt;br /&gt;
        &amp;quot;field&amp;quot; : &amp;quot;password&amp;quot;,&lt;br /&gt;
        &amp;quot;message&amp;quot; : &amp;quot;Password cannot be blank&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mandatory headers ===&lt;br /&gt;
&lt;br /&gt;
Besides the above mentioned headers, the following headers are mandatory.&lt;br /&gt;
&lt;br /&gt;
* every answer to a GET reqest should always include &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/HTTP_ETag ETag]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Last-Modified&amp;lt;/code&amp;gt; header. This allows a proxy to cache requests and a client to revalidate already fetched data.&lt;br /&gt;
* the service must recognize &amp;lt;code&amp;gt;ETag&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Last-Modified&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Cache-Control: none&amp;lt;/code&amp;gt; provided by the client and act accordingly.&lt;br /&gt;
* every answer to a GET request must include proper &amp;lt;code&amp;gt;Cache-Control&amp;lt;/code&amp;gt; headers&lt;br /&gt;
* every PUT request to update an object must include the &amp;lt;code&amp;gt;ETag&amp;lt;/code&amp;gt; provided by the &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request to fetch the object initially. The API must respond with an &amp;lt;code&amp;gt;428 (Precondition Required)&amp;lt;/code&amp;gt; if the ETag is missing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Implementation notes&#039;&#039;:&lt;br /&gt;
* one could use the internal LDAP attributes &amp;lt;code&amp;gt;entryCSN&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;modifyTimestamp&amp;lt;/code&amp;gt; to generate an ETag via a hash function. In the case of business objects where multiple LDAP objects are aggregated for one exposed object, the hash can be generated over all constituent objects&lt;br /&gt;
* the &amp;lt;code&amp;gt;Last-Modified&amp;lt;/code&amp;gt; header can be used to directly limit the search results when hitting the LDAP via the &amp;lt;code&amp;gt;modifyTimestamp&amp;lt;/code&amp;gt; internal attribute. Ex. &amp;lt;code&amp;gt;modifytimestamp&amp;gt;=20060301000000Z&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resources and HTTP methods ===&lt;br /&gt;
Resources are always nouns, and specified in plural (such as resellers, customers, users etc.), this prevents one from dealing with irregular pluralizations such as person/people. &lt;br /&gt;
&lt;br /&gt;
The manipulation of resources happens via the HTTP request methods such as &amp;lt;code&amp;gt;GET&amp;lt;/Code&amp;gt;, &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
The following example illustrates the concept with a fictive user resource:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request&lt;br /&gt;
! Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET /users&amp;lt;/code&amp;gt;&lt;br /&gt;
| Retrieves a list of users&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Retrieves a specific user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST /users&amp;lt;/code&amp;gt;&lt;br /&gt;
| Creates a new user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PUT /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Updates the user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PATCH /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Partly updates the user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DELETE /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Deletes the user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DELETE /users&amp;lt;/code&amp;gt;&lt;br /&gt;
| Deletes all users&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== POST ====&lt;br /&gt;
&lt;br /&gt;
On successful creation of an element, the service must return an URI string to the newly created element.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/users/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;usersName&amp;quot;: &amp;quot;Mueller&amp;quot;,&lt;br /&gt;
  &amp;quot;usersType&amp;quot;: &amp;quot;reseller&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 201 Created&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: application/json; charset=UTF-8 &lt;br /&gt;
Location: https://api.example.com/v1/users/67890&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;id&amp;quot;: 67890,&lt;br /&gt;
  &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/users/67890&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Relations ===&lt;br /&gt;
Resources which stand in relation with each other are represented as URIs (scoping):&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/resellers/4000001/customers&amp;lt;/code&amp;gt; -&amp;gt; collection resource (all customers of reseller with uid=4000001)&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/resellers/4000001/customers/4000002&amp;lt;/code&amp;gt; -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001)&lt;br /&gt;
&lt;br /&gt;
The following queries have the same effect as the URIs from above:&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/customers?belongsToResellerUID=4000001&amp;lt;/code&amp;gt; -&amp;gt; collection resource (all customers of reseller with uid=4000001)&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/customers/4000002&amp;lt;/code&amp;gt; -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001)&lt;br /&gt;
&lt;br /&gt;
Relations are always returned as URIs, which the client can hit.&lt;br /&gt;
&lt;br /&gt;
Future possibilities (sub objects) which aren&#039;t currently implemented:&lt;br /&gt;
* If a relation can only exist within another resource, it will be represent by its URI, for example: &amp;lt;code&amp;gt;/threads/123/messages/45&amp;lt;/code&amp;gt;. This URI represents the message with ID #45 of the forum thread with ID #123.&lt;br /&gt;
&lt;br /&gt;
=== Filtering, sorting and searching ===&lt;br /&gt;
Filter, sort and search requests are added as query parameters to the resource URI.&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;filtering&#039;&#039;&#039; the objects returned by a resource URI, the name of an object&#039;s attribute is added as a query parameter with the required value. For example, get all active user elements:&lt;br /&gt;
 GET /v1/users?status=active&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;sorting&#039;&#039;&#039; the objects returned by a resource URI, the query parameter &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt; is added with the object&#039;s sort attribute(s) as the value. The following example will sort users by lastname and firstname in lexicographic ascending order:&lt;br /&gt;
 GET /v1/users?sort=lastname,firstname&lt;br /&gt;
&lt;br /&gt;
The following will sort users by lastname in lexicographic descending and firstname in lexicographic ascending order:&lt;br /&gt;
 GET /v1/users?sort=-lastname,firstname&lt;br /&gt;
&lt;br /&gt;
The following will sort users by lastname and by firstname in lexicographic descending order:&lt;br /&gt;
 GET /v1/users?sort=-lastname,-firstname&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;full text search&#039;&#039;&#039; the objects returned by a resource URI, the query parameter &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; is added with the value to search for. For example&lt;br /&gt;
 GET /v1/users?q=Muell&lt;br /&gt;
will return users named &amp;lt;code&amp;gt;Mueller&amp;lt;/code&amp;gt; as well as the ones living at &amp;lt;code&amp;gt;Muellhaldenstrasse&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For full text search over all the available resources visit [[stoney core: Search Resource - REST API]].&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
Responses with multiple items will be &#039;&#039;&#039;limited and paginated to 30 items&#039;&#039;&#039; per default (defined on server-side). Further items can be accessed by appending the &amp;lt;code&amp;gt;page&amp;lt;/code&amp;gt; query parameter. The number of items to be returned can be &#039;&#039;&#039;raised to a maximum of 100&#039;&#039;&#039; (defined on server-side), by specifying the &amp;lt;code&amp;gt;per_page&amp;lt;/code&amp;gt; query parameter.&lt;br /&gt;
&lt;br /&gt;
For example, to request page number 3 with 40 items per page, a client would send the following GET request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people?page=3&amp;amp;per_page=40&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If pagination is requested by the client and/or enforced by the server (e.g. if the number of available records is larger than the default count and no pagination requested), the service returns [http://tools.ietf.org/html/rfc5988#section-6.2.2 official registered link relation types] (&amp;lt;code&amp;gt;next&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt;) within the HTTP [http://tools.ietf.org/html/rfc5988#section-5 Link header field] for pagination use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/resellers?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/resellers?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/resellers?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/resellers?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The client MUST use those pagination links, rather than constructing the URLs by itself.&lt;br /&gt;
&lt;br /&gt;
Furthermore the service sets a custom header &amp;lt;code&amp;gt;X-Total-Count&amp;lt;/code&amp;gt; containing the (estimation of) total number of records.&lt;br /&gt;
&lt;br /&gt;
=== Field specifications and limitations ===&lt;br /&gt;
@TBD: Do we want a possibility to specify which fields should be return on a GET request? This could either be used to save further requests to element URIs, if one fetches items from a collection URL, or to reduce the required amount of data to be transferred if one only uses a few attributes from a response. If yes, a &amp;lt;code&amp;gt;fields&amp;lt;/code&amp;gt; query parameter should be added to a resource which takes a comma separated list of field names, such as &amp;lt;code&amp;gt;https://api.example.com/v1/users?fields=firstname,lastname&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Maybe. In a collection there shouldn&#039;t be as many elements returned such that this may be come a problem. On the other hand, if we return large sets, we should rather use caching properly. Making it possible to specify fields makes cachign even harder. See for example https://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information/ --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 11:47, 11 December 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Input validations ===&lt;br /&gt;
The service validates all input it receives from a client and returns a &amp;lt;code&amp;gt;422&amp;lt;/code&amp;gt; (Unprocessable Entity) HTTP [[#Error_codes_and_responses|status code together with a descriptive error object]] in case of an input violation (but well-formed JSON).&lt;br /&gt;
&lt;br /&gt;
In case a client passes invalid JSON (a JSON parser is unable to parse the JSON string), the service returns a &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; (Bad Request) HTTP [[#Error_codes_and_responses|status code together with a descriptive error object]] containing the JSON parser error message.&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
* Resource for modules =&amp;gt; which modules are available for a given role and belong to which category&lt;br /&gt;
* Nested URLs vs. filter via get parameter =&amp;gt; &amp;lt;code&amp;gt;/users/&amp;lt;UID&amp;gt;/products&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;/products/?userId=&amp;lt;UID&amp;gt;&amp;lt;/code&amp;gt;, (choose a better word for product?)&lt;br /&gt;
* Sudo mechanism, via custom HTTP header, for example &amp;lt;code&amp;gt;X-USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_REST_API&amp;diff=3850</id>
		<title>stoney core: REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_REST_API&amp;diff=3850"/>
		<updated>2014-08-06T07:18:52Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Error codes and responses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
= Entities, Roles and Relationships =&lt;br /&gt;
== Overview ==&lt;br /&gt;
Description, how everything works together.Entitlement, Access and Roles&lt;br /&gt;
&lt;br /&gt;
== Entities ==&lt;br /&gt;
An Entity is always a company or a person.&lt;br /&gt;
&lt;br /&gt;
=== Service Provider ===&lt;br /&gt;
A service provider is the owner of the stoney cloud installation. One or more employees of the the service provider must be [[#Super User | super users]]. &lt;br /&gt;
&lt;br /&gt;
=== Reseller(s) ===&lt;br /&gt;
A reseller sells services of the service provider as his own. He is responsible for the administration of his customers and their services.&lt;br /&gt;
&lt;br /&gt;
=== Customers(s) ===&lt;br /&gt;
A customer subscribes to services that the reseller sells. The customer can administrate his own people, employees and services.&lt;br /&gt;
&lt;br /&gt;
=== People ===&lt;br /&gt;
==== Person ====&lt;br /&gt;
A person belonging one or more resellers and one or more customers. Normally, a person would belong to one reseller and one customer.&lt;br /&gt;
&lt;br /&gt;
==== Employee ====&lt;br /&gt;
A person, which is employed by one or more resellers and/or one or more customers.&lt;br /&gt;
&lt;br /&gt;
==== Super User ====&lt;br /&gt;
A super user is a person which has the right to complete the REST API functionality. The stoney cloud is delivered with one active super user. See the  [[stoney_core:_OpenLDAP_directory_data_organisation#People_.28Superuser.29 | People (Superuser)]] description in the [[stoney core: OpenLDAP directory data organisation]].&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
The roles are not finalized yet.&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
The relationships are hierarchical:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Service Provider Person&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reseller Employee&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Customer Employee&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reseller Person&#039;&#039;&#039; and &#039;&#039;&#039;Customer Person&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The further down you go, the less rights a person has (this is currently independent from any existing roles, as these have not been finalized yet).&lt;br /&gt;
&lt;br /&gt;
=== Service Provider Person (SPP) ===&lt;br /&gt;
Definition of a Service Provider Person:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000002&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| -&lt;br /&gt;
| sstBelongsToUID&lt;br /&gt;
| 1&lt;br /&gt;
| Hidden (internal) attribute, that will lose it&#039;s meaning, when the roles are finalized. Makes a person a super user.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller (in this case), that the person is an employee of (multiple resellers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer (in this case), that the person is an employee of (multiple customers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Service Provider Person (SPP) Rights ====&lt;br /&gt;
A Service Provider Person can just about do anything. The following rights are unique for a Service Provider Person (SPP):&lt;br /&gt;
* SPP.00: &#039;&#039;&#039;Create a reseller&#039;&#039;&#039;: Can create a reseller.&lt;br /&gt;
* SPP.01: &#039;&#039;&#039;Retrieve all resellers&#039;&#039;&#039;: Can retrieve all resellers.&lt;br /&gt;
* SPP.02: &#039;&#039;&#039;Retrieve a reseller&#039;&#039;&#039;: Can retrieve a reseller.&lt;br /&gt;
* SPP.03: &#039;&#039;&#039;Update a reseller:&#039;&#039;&#039; Can update a reseller.&lt;br /&gt;
* SPP.04: &#039;&#039;&#039;Partly Update a reseller&#039;&#039;&#039;: Can partly update a reseller.&lt;br /&gt;
* SPP.05: &#039;&#039;&#039;Delete reseller&#039;&#039;&#039;: Can delete a reseller (if no customers, people or services are linked to the reseller).&lt;br /&gt;
* SPP.06: &#039;&#039;&#039;Create a person&#039;&#039;&#039;: Can create a person (and make them a super user, an employee of one or more reseller(s) and an employee of one or more reseller(s)).&lt;br /&gt;
* SPP.07: &#039;&#039;&#039;Retrieve all people&#039;&#039;&#039;: Can retrieve all people.&lt;br /&gt;
* SPP.08: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve a person.&lt;br /&gt;
* SPP.09: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update a person (including making them a super user, an employee of one or more reseller(s) and an employee of one or more reseller(s)).&lt;br /&gt;
* SPP.10: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update a person.&lt;br /&gt;
* SPP.11: &#039;&#039;&#039;Delete person&#039;&#039;&#039;: Can delete a person (if no services are linked to the person).&lt;br /&gt;
&lt;br /&gt;
=== Reseller Employee (RE) ===&lt;br /&gt;
Definition of a Reseller Employee (RE):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000003&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller (in this case), that the person is an employee of (multiple resellers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000001&lt;br /&gt;
| Shows the customer (in this case), that the person is an employee of (multiple customers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Reseller Employee (RE) Rights ====&lt;br /&gt;
Sees the reseller they belong to, themselves, their own customers, people and their services. The following rights exist for a Reseller Employee (RE) and a Service Provider Person (SPP):&lt;br /&gt;
* RE.00: &#039;&#039;&#039;Retrieve some resellers&#039;&#039;&#039;: Can retrieve the reseller(s) they are an employee of.&lt;br /&gt;
* RE.01: &#039;&#039;&#039;Retrieve a reseller&#039;&#039;&#039;: Can retrieve one of the reseller(s) they are an employee of.&lt;br /&gt;
* RE.02: &#039;&#039;&#039;Update a reseller:&#039;&#039;&#039; Can update one of the reseller(s) they are an employee of.&lt;br /&gt;
* RE.03: &#039;&#039;&#039;Partly Update a reseller&#039;&#039;&#039;: Can partly update one of the reseller(s) they are an employee of.&lt;br /&gt;
&lt;br /&gt;
* RE.04: &#039;&#039;&#039;Create a customer&#039;&#039;&#039;: Can create a customer.&lt;br /&gt;
* RE.05: &#039;&#039;&#039;Retrieve all customers&#039;&#039;&#039;: Can retrieve all their customers.&lt;br /&gt;
* RE.06: &#039;&#039;&#039;Retrieve a customer&#039;&#039;&#039;: Can retrieve one of their customers.&lt;br /&gt;
* RE.07: &#039;&#039;&#039;Update a customer:&#039;&#039;&#039; Can update one of their customers.&lt;br /&gt;
* RE.08: &#039;&#039;&#039;Partly Update a customer&#039;&#039;&#039;: Can partly update one of their customers.&lt;br /&gt;
* RE.09: &#039;&#039;&#039;Delete customer&#039;&#039;&#039;: Can delete one of their customers (if no people or services are linked to the customer).&lt;br /&gt;
&lt;br /&gt;
* RE.10: &#039;&#039;&#039;Create a person&#039;&#039;&#039;: Can create a person (including making them an employee of their reseller(s) and of their customer(s)).&lt;br /&gt;
* RE.11: &#039;&#039;&#039;Retrieve all people&#039;&#039;&#039;: Can retrieve all their people (of their reseller(s) and their customer(s)).&lt;br /&gt;
* RE.12: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve one of their people (of their reseller(s) and their customer(s)).&lt;br /&gt;
* RE.13: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update a person (including making them an employee of their reseller(s) and of their customer(s)).&lt;br /&gt;
* RE.14: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update a person.&lt;br /&gt;
* RE.15: &#039;&#039;&#039;Delete person&#039;&#039;&#039;: Can delete a person (if no services are linked to the person).&lt;br /&gt;
&lt;br /&gt;
=== Customer Employee (CE) ===&lt;br /&gt;
Definition of a Customer Employee (CE):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000004&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000002&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| employeeOfId&lt;br /&gt;
| sstEmployeeOfUID&lt;br /&gt;
| 4000002&lt;br /&gt;
| Shows the customer (in this case), that the person is an employee of (multiple customers possible, N:M relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Customer Employee (CE) Rights ====&lt;br /&gt;
Sees the customer they belong to, themselves, their own people and their services. The following rights exist for a Customer Employee (CE), a Reseller Employee (RE) and a Service Provider Person (SPP):&lt;br /&gt;
* CE.00: &#039;&#039;&#039;Retrieve some customers&#039;&#039;&#039;: Can retrieve the customer(s) they are an employee of.&lt;br /&gt;
* CE.01: &#039;&#039;&#039;Retrieve a customer&#039;&#039;&#039;: Can retrieve one of the customer(s) they are an employee of.&lt;br /&gt;
* CE.02: &#039;&#039;&#039;Update a customer:&#039;&#039;&#039; Can update one of the customer(s) they are an employee of.&lt;br /&gt;
* CE.03: &#039;&#039;&#039;Partly Update a customer&#039;&#039;&#039;: Can partly update one of the customer(s) they are an employee of.&lt;br /&gt;
&lt;br /&gt;
* CE.04: &#039;&#039;&#039;Create a person&#039;&#039;&#039;: Can create a person (including making them an employee of their customer(s)).&lt;br /&gt;
* CE.05: &#039;&#039;&#039;Retrieve all people&#039;&#039;&#039;: Can retrieve all their people (of their customer(s)).&lt;br /&gt;
* CE.06: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve one of their people (of their customer(s)).&lt;br /&gt;
* CE.07: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update a person (including making them an employee of their customer(s)).&lt;br /&gt;
* CE.08: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update a person.&lt;br /&gt;
* CE.09: &#039;&#039;&#039;Delete person&#039;&#039;&#039;: Can delete a person (if no services are linked to the person).&lt;br /&gt;
&lt;br /&gt;
=== Reseller Person (P) and Customer Person (P) ===&lt;br /&gt;
Definition of a Reseller Person (P) and Customer Person (P):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! API Attribute&lt;br /&gt;
! LDAP Attribute&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| id&lt;br /&gt;
| uid&lt;br /&gt;
| 4000005&lt;br /&gt;
| Unique id of the person.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| isActive&lt;br /&gt;
| sstIsActive&lt;br /&gt;
| true&lt;br /&gt;
| Is the person active or not. Only active people are allowed to authenticate themselves.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToResellerId&lt;br /&gt;
| sstBelongsToResellerUID&lt;br /&gt;
| 4000000&lt;br /&gt;
| Shows the reseller, that the person belongs to (only one reseller possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| belongsToCustomerId&lt;br /&gt;
| sstBelongsToCustomerUID&lt;br /&gt;
| 4000002&lt;br /&gt;
| Shows the customer, that the person belongs to (only one customer possible, N:1 relation).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Reseller Person (P) and Customer Person (P) Rights ====&lt;br /&gt;
A Reseller Person (P) and Customer Person (P) act exactly the same. They see themselves and their own services.&lt;br /&gt;
Sees the customer they belong to, themselves, their own people and their services. The following rights exist for a Reseller Person (P), a Customer Person (P), a Customer Employee (CE), a Reseller Employee (RE) and a Service Provider Person (SPP):&lt;br /&gt;
* P.00: &#039;&#039;&#039;Retrieve a person&#039;&#039;&#039;: Can retrieve themselves.&lt;br /&gt;
* P.01: &#039;&#039;&#039;Update a person:&#039;&#039;&#039; Can update themselves.&lt;br /&gt;
* P.02: &#039;&#039;&#039;Partly Update a person&#039;&#039;&#039;: Can partly update themselves.&lt;br /&gt;
&lt;br /&gt;
= REST API documentation =&lt;br /&gt;
=== Reserved Keywords ===&lt;br /&gt;
We have some special reserved keywords, which can no be used by the REST API:&lt;br /&gt;
* sort: Used for sorting.&lt;br /&gt;
* q: Full text search.&lt;br /&gt;
* page: Pagination.&lt;br /&gt;
&lt;br /&gt;
=== Base URI ===&lt;br /&gt;
The RESTful web service has to be accessible via a secure HTTP (HTTPS) base URI, for instance &amp;lt;code&amp;gt;https://api.example.com/v1&amp;lt;/code&amp;gt;.&lt;br /&gt;
The definition of the base URI is up to the provider of the service. The only requirements are the use of HTTPS and the presence of the service&#039;s version information, so that further changes are possible without breaking existing clients.&lt;br /&gt;
&lt;br /&gt;
=== Client authentication and authorization ===&lt;br /&gt;
The service needs to authenticate each client via HTTP basic authentication by a user name and a corresponding password. If a unauthenticated client tries to access the service, it will response with a &amp;lt;code&amp;gt;401&amp;lt;/code&amp;gt; (Unauthorized) HTTP [[#Error_codes_and_responses|error code]].&lt;br /&gt;
&lt;br /&gt;
Furthermore the service must retrieve the authenticated users role and object ownership and respect their respective value when returning collections and elements and acting on HTTP methods. If a client tries to get, modify or delete an element for which it is not authorized, the services will response with a &amp;lt;code&amp;gt;403&amp;lt;/code&amp;gt; (Forbidden) HTTP [[#Error_codes_and_responses|error code]] and includes a descriptive authorization validation message within the JSON error object.&lt;br /&gt;
&lt;br /&gt;
To solely authentication a person, use the resource described under [[stoney core: Authentication Resource - REST API]].&lt;br /&gt;
&lt;br /&gt;
=== Data interchange format ===&lt;br /&gt;
The service needs to accept and send all data in the JSON data interchange format via HTTP, encoded as UTF-8. Thus a client needs to accept and use the [http://tools.ietf.org/html/rfc4627 &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt;] media type. Further media types might be supported in the future.&lt;br /&gt;
&lt;br /&gt;
This results in the following required request and response headers:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Request header&lt;br /&gt;
! Response header&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: utf-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;Content-Type: application/json;charset=utf-8&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* If the client sends an &amp;lt;code&amp;gt;Accept&amp;lt;/code&amp;gt; header with an unsupported value (at the moment only &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt; is supported), the service will respond with a &amp;lt;code&amp;gt;406&amp;lt;/code&amp;gt; (Not Acceptable)  [[#Error codes and responses|error code]].&lt;br /&gt;
* If the client sends an &amp;lt;code&amp;gt;Accept-Charset&amp;lt;/code&amp;gt; header with an unsupported value (at the moment only &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt; is supported), the service will respond with a &amp;lt;code&amp;gt;406&amp;lt;/code&amp;gt; (Not Acceptable)  [[#Error codes and responses|error code]].&lt;br /&gt;
* If no &amp;lt;code&amp;gt;Accept&amp;lt;/code&amp;gt; header is sent, the server will use JSON, possibly pretty-printed and annotated.&lt;br /&gt;
* If no &amp;lt;code&amp;gt;Accept-Charset&amp;lt;/code&amp;gt; header is sent, the server send the response with &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt; as charset.&lt;br /&gt;
* If the client sends a &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; other than &amp;lt;code&amp;gt;application/json&amp;lt;/code&amp;gt; on a POST, PUT or PATCH request, the service will respond with a &amp;lt;code&amp;gt;415&amp;lt;/code&amp;gt; (Unsupported Media Type) [[#Error codes and responses|error code]].&lt;br /&gt;
* If the client sends invalid JSON, the service will response with a &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; (Bad Request) HTTP  [[#Error codes and responses|error code]] and a descriptive error message within the error object.&lt;br /&gt;
* When returning a &amp;lt;code&amp;gt;401&amp;lt;/code&amp;gt;, a proper &amp;lt;code&amp;gt;WWW-Authenticate&amp;lt;/code&amp;gt; header must be sent as well as documented in [http://tools.ietf.org/html/rfc7235#page-7 RFC7235 (or earlier HTTP 1.1/1.0 RFCs)].&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted, the [http://tools.ietf.org/wg/httpbis/ HTTPbis RFCs] always apply.&lt;br /&gt;
&lt;br /&gt;
Future extension:&lt;br /&gt;
Client may supply &amp;lt;code&amp;gt;application/vnd.org.stoney-cloud.api+json&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; to declare the requested schema/format of the data. This can then also be used to introduce additional versioning.&lt;br /&gt;
&lt;br /&gt;
=== Error codes and responses ===&lt;br /&gt;
The service returns appropriate HTTP status codes for every request, the following table lists the commonly used codes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP status code&lt;br /&gt;
! Text&lt;br /&gt;
! Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| OK&lt;br /&gt;
| Success.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 201&lt;br /&gt;
| Created&lt;br /&gt;
| A new resource was successfully created.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 400&lt;br /&gt;
| Bad Request&lt;br /&gt;
| The request was invalid. A descriptive error message will be sent within the response body.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| Not Found&lt;br /&gt;
| The requested resource could not be found but may be available again in the future.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 406&lt;br /&gt;
| Not Acceptable&lt;br /&gt;
| The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 401&lt;br /&gt;
| Unauthorized&lt;br /&gt;
| The client has failed or not yet tried to authenticate.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| Forbidden&lt;br /&gt;
| The client is not allowed to access the requested resource.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 415&lt;br /&gt;
| Unsupported Media Type&lt;br /&gt;
| The request entity has a media type which the server or resource does not support. For example, sending XML instead of JSON in a POST, PUT or PATCH method.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 422&lt;br /&gt;
| Unprocessable Entity&lt;br /&gt;
| The request was well-formed but was unable to be followed due to semantic errors. For example, a client sends a invalid field value (numbers instead of characters) in a JSON object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 428&lt;br /&gt;
| Precondition Required&lt;br /&gt;
| The client did not provide a proper ETag and/or Last-modification header when updating an object via PUT, see http://tools.ietf.org/html/rfc6585#section-3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 429&lt;br /&gt;
| Too Many Requests&lt;br /&gt;
| There were too many requests within a given time-period, see http://tools.ietf.org/html/rfc6585#section-4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 500&lt;br /&gt;
| Internal Server Error&lt;br /&gt;
| An internal error succoured. A descriptive error message will be sent within the response body.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 503&lt;br /&gt;
| Service Unavailable&lt;br /&gt;
| The service is temporary unavailable, because it is overloaded or down for maintenance&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally the service returns a descriptive error object in case a HTTP error was returned (4xx) within the message body of the response. An error object consists of an error code and a human readable error message, with further detailed error messages if applicable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  &amp;quot;error&amp;quot;: { &lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;core&amp;quot;,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 123,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;Validation failed&amp;quot;&lt;br /&gt;
    &amp;quot;details&amp;quot; : [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;module&amp;quot;: &amp;quot;core&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot; : 5432,&lt;br /&gt;
        &amp;quot;field&amp;quot; : &amp;quot;firstName&amp;quot;,&lt;br /&gt;
        &amp;quot;message&amp;quot; : &amp;quot;First name cannot be longer than 35 characters&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;module&amp;quot;: &amp;quot;core&amp;quot;,&lt;br /&gt;
        &amp;quot;code&amp;quot; : 5123,&lt;br /&gt;
        &amp;quot;field&amp;quot; : &amp;quot;password&amp;quot;,&lt;br /&gt;
        &amp;quot;message&amp;quot; : &amp;quot;Password cannot be blank&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mandatory headers ===&lt;br /&gt;
&lt;br /&gt;
Besides the above mentioned headers, the following headers are mandatory.&lt;br /&gt;
&lt;br /&gt;
* every answer to a GET reqest should always include &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/HTTP_ETag ETag]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Last-Modified&amp;lt;/code&amp;gt; header. This allows a proxy to cache requests and a client to revalidate already fetched data.&lt;br /&gt;
* the service must recognize &amp;lt;code&amp;gt;ETag&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Last-Modified&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Cache-Control: none&amp;lt;/code&amp;gt; provided by the client and act accordingly.&lt;br /&gt;
* every answer to a GET request must include proper &amp;lt;code&amp;gt;Cache-Control&amp;lt;/code&amp;gt; headers&lt;br /&gt;
* every PUT request to update an object must include the &amp;lt;code&amp;gt;ETag&amp;lt;/code&amp;gt; provided by the &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request to fetch the object initially. The API must respond with an &amp;lt;code&amp;gt;428 (Precondition Required)&amp;lt;/code&amp;gt; if the ETag is missing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Implementation notes&#039;&#039;:&lt;br /&gt;
* one could use the internal LDAP attributes &amp;lt;code&amp;gt;entryCSN&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;modifyTimestamp&amp;lt;/code&amp;gt; to generate an ETag via a hash function. In the case of business objects where multiple LDAP objects are aggregated for one exposed object, the hash can be generated over all constituent objects&lt;br /&gt;
* the &amp;lt;code&amp;gt;Last-Modified&amp;lt;/code&amp;gt; header can be used to directly limit the search results when hitting the LDAP via the &amp;lt;code&amp;gt;modifyTimestamp&amp;lt;/code&amp;gt; internal attribute. Ex. &amp;lt;code&amp;gt;modifytimestamp&amp;gt;=20060301000000Z&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resources and HTTP methods ===&lt;br /&gt;
Resources are always nouns, and specified in plural (such as resellers, customers, users etc.), this prevents one from dealing with irregular pluralizations such as person/people. &lt;br /&gt;
&lt;br /&gt;
The manipulation of resources happens via the HTTP request methods such as &amp;lt;code&amp;gt;GET&amp;lt;/Code&amp;gt;, &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
The following example illustrates the concept with a fictive user resource:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request&lt;br /&gt;
! Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET /users&amp;lt;/code&amp;gt;&lt;br /&gt;
| Retrieves a list of users&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Retrieves a specific user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST /users&amp;lt;/code&amp;gt;&lt;br /&gt;
| Creates a new user&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PUT /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Updates the user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PATCH /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Partly updates the user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DELETE /users/12345678&amp;lt;/code&amp;gt;&lt;br /&gt;
| Deletes the user with user ID 12345678&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DELETE /users&amp;lt;/code&amp;gt;&lt;br /&gt;
| Deletes all users&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== POST ====&lt;br /&gt;
&lt;br /&gt;
On successful creation of an element, the service must return an URI string to the newly created element.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/users/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;usersName&amp;quot;: &amp;quot;Mueller&amp;quot;,&lt;br /&gt;
  &amp;quot;usersType&amp;quot;: &amp;quot;reseller&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 201 Created&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: application/json; charset=UTF-8 &lt;br /&gt;
Location: https://api.example.com/v1/users/67890&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;id&amp;quot;: 67890,&lt;br /&gt;
  &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/users/67890&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Relations ===&lt;br /&gt;
Resources which stand in relation with each other are represented as URIs (scoping):&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/resellers/4000001/customers&amp;lt;/code&amp;gt; -&amp;gt; collection resource (all customers of reseller with uid=4000001)&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/resellers/4000001/customers/4000002&amp;lt;/code&amp;gt; -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001)&lt;br /&gt;
&lt;br /&gt;
The following queries have the same effect as the URIs from above:&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/customers?belongsToResellerUID=4000001&amp;lt;/code&amp;gt; -&amp;gt; collection resource (all customers of reseller with uid=4000001)&lt;br /&gt;
* &amp;lt;code&amp;gt;/v1/customers/4000002&amp;lt;/code&amp;gt; -&amp;gt; resource (the customer with uid=4000002 of reseller with uid=4000001)&lt;br /&gt;
&lt;br /&gt;
Relations are always returned as URIs, which the client can hit.&lt;br /&gt;
&lt;br /&gt;
Future possibilities (sub objects) which aren&#039;t currently implemented:&lt;br /&gt;
* If a relation can only exist within another resource, it will be represent by its URI, for example: &amp;lt;code&amp;gt;/threads/123/messages/45&amp;lt;/code&amp;gt;. This URI represents the message with ID #45 of the forum thread with ID #123.&lt;br /&gt;
&lt;br /&gt;
=== Filtering, sorting and searching ===&lt;br /&gt;
Filter, sort and search requests are added as query parameters to the resource URI.&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;filtering&#039;&#039;&#039; the objects returned by a resource URI, the name of an object&#039;s attribute is added as a query parameter with the required value. For example, get all active user elements:&lt;br /&gt;
 GET /v1/users?status=active&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;sorting&#039;&#039;&#039; the objects returned by a resource URI, the query parameter &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt; is added with the object&#039;s sort attribute(s) as the value. The following example will sort users by lastname and firstname in lexicographic ascending order:&lt;br /&gt;
 GET /v1/users?sort=lastname,firstname&lt;br /&gt;
&lt;br /&gt;
The following will sort users by lastname in lexicographic descending and firstname in lexicographic ascending order:&lt;br /&gt;
 GET /v1/users?sort=-lastname,firstname&lt;br /&gt;
&lt;br /&gt;
The following will sort users by lastname and by firstname in lexicographic descending order:&lt;br /&gt;
 GET /v1/users?sort=-lastname,-firstname&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;full text search&#039;&#039;&#039; the objects returned by a resource URI, the query parameter &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; is added with the value to search for. For example&lt;br /&gt;
 GET /v1/users?q=Muell&lt;br /&gt;
will return users named &amp;lt;code&amp;gt;Mueller&amp;lt;/code&amp;gt; as well as the ones living at &amp;lt;code&amp;gt;Muellhaldenstrasse&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For full text search over all the available resources visit [[stoney core: Search Resource - REST API]].&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
Responses with multiple items will be &#039;&#039;&#039;limited and paginated to 30 items&#039;&#039;&#039; per default (defined on server-side). Further items can be accessed by appending the &amp;lt;code&amp;gt;page&amp;lt;/code&amp;gt; query parameter. The number of items to be returned can be &#039;&#039;&#039;raised to a maximum of 100&#039;&#039;&#039; (defined on server-side), by specifying the &amp;lt;code&amp;gt;per_page&amp;lt;/code&amp;gt; query parameter.&lt;br /&gt;
&lt;br /&gt;
For example, to request page number 3 with 40 items per page, a client would send the following GET request:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people?page=3&amp;amp;per_page=40&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If pagination is requested by the client and/or enforced by the server (e.g. if the number of available records is larger than the default count and no pagination requested), the service returns [http://tools.ietf.org/html/rfc5988#section-6.2.2 official registered link relation types] (&amp;lt;code&amp;gt;next&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt;) within the HTTP [http://tools.ietf.org/html/rfc5988#section-5 Link header field] for pagination use:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/resellers?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/resellers?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/resellers?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/resellers?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The client MUST use those pagination links, rather than constructing the URLs by itself.&lt;br /&gt;
&lt;br /&gt;
Furthermore the service sets a custom header &amp;lt;code&amp;gt;X-Total-Count&amp;lt;/code&amp;gt; containing the (estimation of) total number of records.&lt;br /&gt;
&lt;br /&gt;
=== Field specifications and limitations ===&lt;br /&gt;
@TBD: Do we want a possibility to specify which fields should be return on a GET request? This could either be used to save further requests to element URIs, if one fetches items from a collection URL, or to reduce the required amount of data to be transferred if one only uses a few attributes from a response. If yes, a &amp;lt;code&amp;gt;fields&amp;lt;/code&amp;gt; query parameter should be added to a resource which takes a comma separated list of field names, such as &amp;lt;code&amp;gt;https://api.example.com/v1/users?fields=firstname,lastname&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Maybe. In a collection there shouldn&#039;t be as many elements returned such that this may be come a problem. On the other hand, if we return large sets, we should rather use caching properly. Making it possible to specify fields makes cachign even harder. See for example https://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information/ --[[User:Tiziano|Tiziano]] ([[User talk:Tiziano|talk]]) 11:47, 11 December 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Input validations ===&lt;br /&gt;
The service validates all input it receives from a client and returns a &amp;lt;code&amp;gt;422&amp;lt;/code&amp;gt; (Unprocessable Entity) HTTP [[#Error_codes_and_responses|error code with a descriptive error object]].&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
* Resource for modules =&amp;gt; which modules are available for a given role and belong to which category&lt;br /&gt;
* Nested URLs vs. filter via get parameter =&amp;gt; &amp;lt;code&amp;gt;/users/&amp;lt;UID&amp;gt;/products&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;/products/?userId=&amp;lt;UID&amp;gt;&amp;lt;/code&amp;gt;, (choose a better word for product?)&lt;br /&gt;
* Sudo mechanism, via custom HTTP header, for example &amp;lt;code&amp;gt;X-USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_Server_set-up&amp;diff=3685</id>
		<title>stoney backup: Server set-up</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_Server_set-up&amp;diff=3685"/>
		<updated>2014-06-19T08:15:43Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* writeAccountSize.pl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Abstract =&lt;br /&gt;
This document describes server setup for the stoney cloud (Online) Backup service, built upon the [http://www.gentoo.org/ Gentoo] Linux distribution.&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
After working through this documentation, you will be able to set up and configure your own (Online) Backup service server.&lt;br /&gt;
&lt;br /&gt;
= Software Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
A working stoney cloud, installed according to [[stoney cloud: Single-Node Installation]] or [[stoney cloud: Multi-Node Installation]].&lt;br /&gt;
&lt;br /&gt;
== Keywords &amp;amp; USE-Flags ==&lt;br /&gt;
For a minimal OpenLDAP directory installation:&lt;br /&gt;
 echo &amp;quot;net-nds/openldap minimal sasl&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
 echo &amp;quot;net-nds/openldap ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&lt;br /&gt;
NSS and PAM modules for lookups using LDAP:&lt;br /&gt;
 echo &amp;quot;sys-auth/nss-pam-ldapd sasl&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
 echo &amp;quot;sys-auth/nss-pam-ldapd ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
 echo &amp;quot;sys-fs/quota ldap&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;=app-admin/jailkit-2.16 ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&lt;br /&gt;
For the prov-backup-rsnapshot daemon:&lt;br /&gt;
 echo &amp;quot;dev-perl/Net-SMTPS ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
 echo &amp;quot;perl-core/Switch ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&lt;br /&gt;
To build puttygen only without X11:&lt;br /&gt;
 echo &amp;quot;net-misc/putty ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
 echo &amp;quot;net-misc/putty -gtk&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
&lt;br /&gt;
== Emerge ==&lt;br /&gt;
 emerge -va nss-pam-ldapd \&lt;br /&gt;
            quota \&lt;br /&gt;
            net-misc/putty \&lt;br /&gt;
            app-admin/jailkit \&lt;br /&gt;
            sys-apps/haveged \&lt;br /&gt;
            net-misc/putty \&lt;br /&gt;
            sys-apps/sst-backup-utils \&lt;br /&gt;
            sys-apps/sst-prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
To list the dependencies of ebuilds, you can use &amp;lt;code&amp;gt;equery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 equery depgraph sst-backup-utils&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Searching for sst-backup-utils ...&lt;br /&gt;
&lt;br /&gt;
 * dependency graph for sys-apps/sst-backup-utils-0.1.0&lt;br /&gt;
 `--  sys-apps/sst-backup-utils-0.1.0  amd64 &lt;br /&gt;
   `--  dev-perl/PerlUtil-0.1.0  (&amp;gt;=dev-perl/PerlUtil-0.1.0) amd64 &lt;br /&gt;
   `--  virtual/perl-Sys-Syslog-0.320.0  (virtual/perl-Sys-Syslog) amd64 &lt;br /&gt;
   `--  dev-perl/perl-ldap-0.530.0  (dev-perl/perl-ldap) amd64 &lt;br /&gt;
   `--  dev-perl/XML-Simple-2.200.0  (dev-perl/XML-Simple) amd64 &lt;br /&gt;
   `--  dev-perl/Config-IniFiles-2.780.0  (dev-perl/Config-IniFiles) amd64 &lt;br /&gt;
   `--  dev-perl/XML-Validator-Schema-1.100.0  (dev-perl/XML-Validator-Schema) amd64 &lt;br /&gt;
   `--  dev-perl/Date-Calc-6.300.0  (dev-perl/Date-Calc) amd64 &lt;br /&gt;
   `--  dev-perl/DateManip-6.310.0  (dev-perl/DateManip) amd64 &lt;br /&gt;
   `--  dev-perl/Schedule-Cron-Events-1.930.0  (dev-perl/Schedule-Cron-Events) amd64 &lt;br /&gt;
   `--  dev-perl/DateTime-Format-Strptime-1.520.0  (dev-perl/DateTime-Format-Strptime) amd64 &lt;br /&gt;
   `--  dev-perl/XML-SAX-0.990.0  (dev-perl/XML-SAX) amd64 &lt;br /&gt;
   `--  virtual/perl-MIME-Base64-3.130.0-r2  (virtual/perl-MIME-Base64) amd64 &lt;br /&gt;
   `--  dev-perl/Authen-SASL-2.160.0  (dev-perl/Authen-SASL) amd64 &lt;br /&gt;
   `--  dev-perl/Net-SMTPS-0.30.0  (dev-perl/Net-SMTPS) ~amd64 &lt;br /&gt;
   `--  dev-perl/text-template-1.450.0  (dev-perl/text-template) amd64 &lt;br /&gt;
   `--  virtual/perl-Getopt-Long-2.380.0-r2  (virtual/perl-Getopt-Long) amd64 &lt;br /&gt;
   `--  dev-perl/Parallel-ForkManager-1.20.0  (dev-perl/Parallel-ForkManager) amd64 &lt;br /&gt;
   `--  dev-perl/Time-Stopwatch-1.0.0  (dev-perl/Time-Stopwatch) amd64 &lt;br /&gt;
   `--  app-backup/rsnapshot-1.3.1-r1  (app-backup/rsnapshot) amd64 &lt;br /&gt;
[ sys-apps/sst-backup-utils-0.1.0 stats: packages (20), max depth (1) ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information, visit the [http://www.gentoo.org/doc/en/gentoolkit.xml Gentoolkit] page.&lt;br /&gt;
&lt;br /&gt;
= Base Server Software Configuration =&lt;br /&gt;
== OpenSSH ==&lt;br /&gt;
=== OpenSSH Configuration ===&lt;br /&gt;
Configure the OpenSSH daemon:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vi /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set following options:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
PasswordAuthentication yes&lt;br /&gt;
UsePAM yes&lt;br /&gt;
Subsystem     sftp   internal-sftp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure, that &amp;lt;code&amp;gt;Subsystem     sftp   internal-sftp&amp;lt;/code&amp;gt; is the last line in the configuration file.&lt;br /&gt;
&lt;br /&gt;
We want to reduce the numbers of chroot environments in one folder. As the &amp;lt;code&amp;gt;ChrootDirectory&amp;lt;/code&amp;gt; configuration option only allows &amp;lt;code&amp;gt;%h&amp;lt;/code&amp;gt; (home directory of the user) and &amp;lt;code&amp;gt;%u&amp;lt;/code&amp;gt; (username of the user), we need to create the necessary matching rules in the form of:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Match User *000&lt;br /&gt;
  ChrootDirectory /var/backup/000/%u&lt;br /&gt;
  AuthorizedKeysFile /var/backup/000/%u/%h/.ssh/authorized_keys&lt;br /&gt;
Match&lt;br /&gt;
Match User *001&lt;br /&gt;
  ChrootDirectory /var/backup/001/%u&lt;br /&gt;
  AuthorizedKeysFile /var/backup/001/%u/%h/.ssh/authorized_keys&lt;br /&gt;
Match&lt;br /&gt;
...&lt;br /&gt;
Match User *999&lt;br /&gt;
  ChrootDirectory /var/backup/999/%u&lt;br /&gt;
  AuthorizedKeysFile /var/backup/999/%u/%h/.ssh/authorized_keys&lt;br /&gt;
Match&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The creation of the matching rules is done by executing the following bash commands:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILE=/etc/ssh/sshd_config;&lt;br /&gt;
&lt;br /&gt;
for x in {0..999} ; do \&lt;br /&gt;
  printf &amp;quot;Match User *%03d\n&amp;quot; $x &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
  printf &amp;quot;  ChrootDirectory /var/backup/%03d/%%u\n&amp;quot; $x &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
  printf &amp;quot;  AuthorizedKeysFile /var/backup/%03d/%%u/%%h/.ssh/authorized_keys\n&amp;quot; $x &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
  printf &amp;quot;Match\n&amp;quot; &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to restart the OpenSSH daemon:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/sshd restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH Host Keys ===&lt;br /&gt;
If you migrate from a existing backup server, you might want to copy the ssh host keys to the new server. If you do so clients want see a difference between the two hosts as the fingerprint remains the same. Copy the following files from the existing host to the new:&lt;br /&gt;
* /etc/ssh/ssh_host_dsa_key&lt;br /&gt;
* /etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
* /etc/ssh/ssh_host_key&lt;br /&gt;
* /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
* /etc/ssh/ssh_host_dsa_key.pub&lt;br /&gt;
* /etc/ssh/ssh_host_ecdsa_key.pub&lt;br /&gt;
* /etc/ssh/ssh_host_key.pub&lt;br /&gt;
* /etc/ssh/ssh_host_rsa_key.pub&lt;br /&gt;
&lt;br /&gt;
Set the correct permissions on the new host:&lt;br /&gt;
 chmod 600 /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_key /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
 chmod 644 /etc/ssh/*.pub&lt;br /&gt;
&lt;br /&gt;
And restart the ssh daemon. &#039;&#039;Caution&#039;&#039;: do not close your existing ssh session as long as you are not sure the ssh daemon has restarted properly and you can login again.&lt;br /&gt;
 /etc/init.d/sshd restart&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
=== /etc/hosts ===&lt;br /&gt;
Update the &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; with the LDAP server:&lt;br /&gt;
 /etc/hosts&lt;br /&gt;
&lt;br /&gt;
 # VIP of the LDAP Server&lt;br /&gt;
 31.216.40.4      ldapm.stoney-cloud.org&lt;br /&gt;
&lt;br /&gt;
=== Root CA Certificate Installation ===&lt;br /&gt;
Install the root CA certificate into the OpenSSL default certificate storage directory:&lt;br /&gt;
 fqdn=&amp;quot;cloud.stoney-cloud.org&amp;quot;    # The fully qualified domain name of the server containing the root certificate.&lt;br /&gt;
 &lt;br /&gt;
 cd /etc/ssl/certs/&lt;br /&gt;
 wget --no-check-certificate https://${fqdn}/ca/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
 chown root:root /etc/ssl/certs/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
 chmod 444 /etc/ssl/certs/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
&lt;br /&gt;
Rebuild the CA hashes&lt;br /&gt;
 c_rehash /etc/ssl/certs/&lt;br /&gt;
&lt;br /&gt;
=== /etc/openldap/ldap.conf ===&lt;br /&gt;
Update the &amp;lt;code&amp;gt;/etc/openldap/ldap.conf&amp;lt;/code&amp;gt;LDAP configuration file/environment variables:&lt;br /&gt;
 /etc/openldap/ldap.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Used to specify a size limit to use when performing searches. The number should be an&lt;br /&gt;
# non-negative integer. SIZELIMIT of zero (0) specifies unlimited search size.&lt;br /&gt;
SIZELIMIT       20000&lt;br /&gt;
&lt;br /&gt;
# Used to specify a time limit to use when performing searches. The number should be an&lt;br /&gt;
# non-negative integer. TIMELIMIT of zero (0) specifies unlimited search time to be used.&lt;br /&gt;
TIMELIMIT       45&lt;br /&gt;
&lt;br /&gt;
# Specify how aliases dereferencing is done. DEREF should be set to one of never, always, search,&lt;br /&gt;
# or find to specify that aliases are never dereferenced, always dereferenced, dereferenced when&lt;br /&gt;
# searching, or dereferenced only when locating the base object for the search. The default is to&lt;br /&gt;
# never dereference aliases.&lt;br /&gt;
DEREF           never&lt;br /&gt;
&lt;br /&gt;
# Specifies the URI(s) of an LDAP server(s) to which the LDAP library should connect. The URI&lt;br /&gt;
# scheme may be either ldapor ldaps which refer to LDAP over TCP and LDAP over SSL (TLS)&lt;br /&gt;
# respectively. Each server&#039;s name can be specified as a domain- style name or an IP address&lt;br /&gt;
# literal. Optionally, the server&#039;s name can followed by a &#039;:&#039; and the port number the LDAP&lt;br /&gt;
# server is listening on. If no port number is provided, the default port for the scheme is&lt;br /&gt;
# used (389 for ldap://, 636 for ldaps://). A space separated list of URIs may be provided.&lt;br /&gt;
URI             ldaps://ldapm.stoney-cloud.org&lt;br /&gt;
&lt;br /&gt;
# Used to specify the default base DN to use when performing ldap operations. The base must be&lt;br /&gt;
# specified as a Distinguished Name in LDAP format.&lt;br /&gt;
BASE            dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
# This is a local copy of the certificate of the certificate authority&lt;br /&gt;
# used to sign the server certificate for the LDAP server I am using&lt;br /&gt;
TLS_CACERT      /etc/ssl/certs/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check you configuration by doing a search:&lt;br /&gt;
 ldapsearch -v -H &amp;quot;ldaps://ldapm.stoney-cloud.org&amp;quot; \&lt;br /&gt;
               -b &amp;quot;dc=stoney-cloud,dc=org&amp;quot; \&lt;br /&gt;
               -D &amp;quot;cn=Manager,dc=stoney-cloud,dc=org&amp;quot; \&lt;br /&gt;
               -s one &amp;quot;(objectClass=*)&amp;quot; \&lt;br /&gt;
               -LLL -W&lt;br /&gt;
&lt;br /&gt;
The result should look something like:&lt;br /&gt;
 ldap_initialize( ldaps://ldapm.stoney-cloud.org:636/??base )&lt;br /&gt;
 filter: (objectClass=*)&lt;br /&gt;
 requesting: All userApplication attributes&lt;br /&gt;
 dn: ou=administration,dc=stoney-cloud,dc=org&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
 ou: administration&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== Random Number Generator (haveged) ==&lt;br /&gt;
Tools like putty are dependent on random numbers to be able to create certificates.&lt;br /&gt;
&lt;br /&gt;
=== haveged - Generate random numbers and feed linux random device ===&lt;br /&gt;
The haveged daemon doesn&#039;t need any special configuration, therefore you can start it from the command line interface:&lt;br /&gt;
 /etc/init.d/haveged start&lt;br /&gt;
&lt;br /&gt;
Check, if the start was successful:&lt;br /&gt;
 ps auxf | grep haveged&lt;br /&gt;
&lt;br /&gt;
 root     18001  1.0  0.0   7420  3616 ?        Ss   08:48   0:00 /usr/sbin/haveged -r 0 -w 1024 -v 1&lt;br /&gt;
&lt;br /&gt;
Add the haveged daemon to the default run level:&lt;br /&gt;
 rc-update add haveged default&lt;br /&gt;
&lt;br /&gt;
== nss-pam-ldapd ==&lt;br /&gt;
=== nslcd.conf — configuration file for LDAP nameservice daemon ===&lt;br /&gt;
 /etc/nslcd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the configuration file for the LDAP nameservice&lt;br /&gt;
# switch library&#039;s nslcd daemon. It configures the mapping&lt;br /&gt;
# between NSS names (see /etc/nsswitch.conf) and LDAP&lt;br /&gt;
# information in the directory.&lt;br /&gt;
# See the manual page nslcd.conf(5) for more information.&lt;br /&gt;
&lt;br /&gt;
# The user and group nslcd should run as.&lt;br /&gt;
uid nslcd&lt;br /&gt;
gid nslcd&lt;br /&gt;
&lt;br /&gt;
# The uri pointing to the LDAP server to use for name lookups.&lt;br /&gt;
# Multiple entries may be specified. The address that is used&lt;br /&gt;
# here should be resolvable without using LDAP (obviously).&lt;br /&gt;
#uri ldap://127.0.0.1/&lt;br /&gt;
#uri ldaps://127.0.0.1/&lt;br /&gt;
#uri ldapi://%2fvar%2frun%2fldapi_sock/&lt;br /&gt;
# Note: %2f encodes the &#039;/&#039; used as directory separator&lt;br /&gt;
uri ldaps://ldapm.tombstone.ch&lt;br /&gt;
&lt;br /&gt;
# The LDAP version to use (defaults to 3&lt;br /&gt;
# if supported by client library)&lt;br /&gt;
#ldap_version 3&lt;br /&gt;
&lt;br /&gt;
# The distinguished name of the search base.&lt;br /&gt;
base dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
# The distinguished name to bind to the server with.&lt;br /&gt;
# Optional: default is to bind anonymously.&lt;br /&gt;
binddn cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
# The credentials to bind with.&lt;br /&gt;
# Optional: default is no credentials.&lt;br /&gt;
# Note that if you set a bindpw you should check the permissions of this file.&lt;br /&gt;
bindpw myverysecretpassword&lt;br /&gt;
&lt;br /&gt;
# The distinguished name to perform password modifications by root by.&lt;br /&gt;
#rootpwmoddn cn=admin,dc=example,dc=com&lt;br /&gt;
&lt;br /&gt;
# The default search scope.&lt;br /&gt;
#scope sub&lt;br /&gt;
#scope one&lt;br /&gt;
#scope base&lt;br /&gt;
&lt;br /&gt;
# Customize certain database lookups.&lt;br /&gt;
#base   group  ou=Groups,dc=example,dc=com&lt;br /&gt;
base   group  ou=groups,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
base   passwd ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
base   shadow ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
#scope  group  onelevel&lt;br /&gt;
#scope  hosts  sub&lt;br /&gt;
&lt;br /&gt;
#filter group  (&amp;amp;(objectClass=posixGroup)(sstIsActive=TRUE))&lt;br /&gt;
filter passwd (&amp;amp;(objectClass=posixAccount)(sstIsActive=TRUE))&lt;br /&gt;
filter shadow (&amp;amp;(objectClass=shadowAccount)(sstIsActive=TRUE))&lt;br /&gt;
&lt;br /&gt;
# Bind/connect timelimit.&lt;br /&gt;
#bind_timelimit 30&lt;br /&gt;
&lt;br /&gt;
# Search timelimit.&lt;br /&gt;
#timelimit 30&lt;br /&gt;
&lt;br /&gt;
# Idle timelimit. nslcd will close connections if the&lt;br /&gt;
# server has not been contacted for the number of seconds.&lt;br /&gt;
#idle_timelimit 3600&lt;br /&gt;
&lt;br /&gt;
# Use StartTLS without verifying the server certificate.&lt;br /&gt;
#ssl start_tls&lt;br /&gt;
tls_reqcert never&lt;br /&gt;
&lt;br /&gt;
# CA certificates for server certificate verification&lt;br /&gt;
#tls_cacertdir /etc/ssl/certs&lt;br /&gt;
#tls_cacertfile /etc/ssl/ca.cert&lt;br /&gt;
&lt;br /&gt;
# Seed the PRNG if /dev/urandom is not provided&lt;br /&gt;
#tls_randfile /var/run/egd-pool&lt;br /&gt;
&lt;br /&gt;
# SSL cipher suite&lt;br /&gt;
# See man ciphers for syntax&lt;br /&gt;
#tls_ciphers TLSv1&lt;br /&gt;
&lt;br /&gt;
# Client certificate and key&lt;br /&gt;
# Use these, if your server requires client authentication.&lt;br /&gt;
#tls_cert&lt;br /&gt;
#tls_key&lt;br /&gt;
&lt;br /&gt;
# Mappings for Services for UNIX 3.5&lt;br /&gt;
#filter passwd (objectClass=User)&lt;br /&gt;
#map    passwd uid              msSFU30Name&lt;br /&gt;
#map    passwd userPassword     msSFU30Password&lt;br /&gt;
#map    passwd homeDirectory    msSFU30HomeDirectory&lt;br /&gt;
#map    passwd homeDirectory    msSFUHomeDirectory&lt;br /&gt;
#filter shadow (objectClass=User)&lt;br /&gt;
#map    shadow uid              msSFU30Name&lt;br /&gt;
#map    shadow userPassword     msSFU30Password&lt;br /&gt;
#filter group  (objectClass=Group)&lt;br /&gt;
#map    group  member           msSFU30PosixMember&lt;br /&gt;
&lt;br /&gt;
# Mappings for Services for UNIX 2.0&lt;br /&gt;
#filter passwd (objectClass=User)&lt;br /&gt;
#map    passwd uid              msSFUName&lt;br /&gt;
#map    passwd userPassword     msSFUPassword&lt;br /&gt;
#map    passwd homeDirectory    msSFUHomeDirectory&lt;br /&gt;
#map    passwd gecos            msSFUName&lt;br /&gt;
#filter shadow (objectClass=User)&lt;br /&gt;
#map    shadow uid              msSFUName&lt;br /&gt;
#map    shadow userPassword     msSFUPassword&lt;br /&gt;
#map    shadow shadowLastChange pwdLastSet&lt;br /&gt;
#filter group  (objectClass=Group)&lt;br /&gt;
#map    group  member           posixMember&lt;br /&gt;
&lt;br /&gt;
# Mappings for Active Directory&lt;br /&gt;
#pagesize 1000&lt;br /&gt;
#referrals off&lt;br /&gt;
#idle_timelimit 800&lt;br /&gt;
#filter passwd (&amp;amp;(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))&lt;br /&gt;
#map    passwd uid              sAMAccountName&lt;br /&gt;
#map    passwd homeDirectory    unixHomeDirectory&lt;br /&gt;
#map    passwd gecos            displayName&lt;br /&gt;
#filter shadow (&amp;amp;(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))&lt;br /&gt;
#map    shadow uid              sAMAccountName&lt;br /&gt;
#map    shadow shadowLastChange pwdLastSet&lt;br /&gt;
#filter group  (objectClass=group)&lt;br /&gt;
&lt;br /&gt;
# Alternative mappings for Active Directory&lt;br /&gt;
# (replace the SIDs in the objectSid mappings with the value for your domain)&lt;br /&gt;
#pagesize 1000&lt;br /&gt;
#referrals off&lt;br /&gt;
#idle_timelimit 800&lt;br /&gt;
#filter passwd (&amp;amp;(objectClass=user)(objectClass=person)(!(objectClass=computer)))&lt;br /&gt;
#map    passwd uid           cn&lt;br /&gt;
#map    passwd uidNumber     objectSid:S-1-5-21-3623811015-3361044348-30300820&lt;br /&gt;
#map    passwd gidNumber     objectSid:S-1-5-21-3623811015-3361044348-30300820&lt;br /&gt;
#map    passwd homeDirectory &amp;quot;/home/$cn&amp;quot;&lt;br /&gt;
#map    passwd gecos         displayName&lt;br /&gt;
#map    passwd loginShell    &amp;quot;/bin/bash&amp;quot;&lt;br /&gt;
#filter group (|(objectClass=group)(objectClass=person))&lt;br /&gt;
#map    group gidNumber      objectSid:S-1-5-21-3623811015-3361044348-30300820&lt;br /&gt;
&lt;br /&gt;
# Mappings for AIX SecureWay&lt;br /&gt;
#filter passwd (objectClass=aixAccount)&lt;br /&gt;
#map    passwd uid              userName&lt;br /&gt;
#map    passwd userPassword     passwordChar&lt;br /&gt;
#map    passwd uidNumber        uid&lt;br /&gt;
#map    passwd gidNumber        gid&lt;br /&gt;
#filter group  (objectClass=aixAccessGroup)&lt;br /&gt;
#map    group  cn               groupName&lt;br /&gt;
#map    group  gidNumber        gid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== nsswitch.conf - Name Service Switch configuration file ===&lt;br /&gt;
 /etc/nsswitch.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:      files ldap&lt;br /&gt;
shadow:      files ldap&lt;br /&gt;
group:       files ldap&lt;br /&gt;
&lt;br /&gt;
# passwd:    db files nis&lt;br /&gt;
# shadow:    db files nis&lt;br /&gt;
# group:     db files nis&lt;br /&gt;
&lt;br /&gt;
hosts:       files dns&lt;br /&gt;
networks:    files dns&lt;br /&gt;
&lt;br /&gt;
services:    db files&lt;br /&gt;
protocols:   db files&lt;br /&gt;
rpc:         db files&lt;br /&gt;
ethers:      db files&lt;br /&gt;
netmasks:    files&lt;br /&gt;
netgroup:    files&lt;br /&gt;
bootparams:  files&lt;br /&gt;
&lt;br /&gt;
automount:   files&lt;br /&gt;
aliases:     files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== system-auth ===&lt;br /&gt;
 vi /etc/pam.d/system-auth&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth            required        pam_env.so&lt;br /&gt;
auth            sufficient      pam_unix.so try_first_pass likeauth nullok&lt;br /&gt;
auth            sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
auth            required        pam_deny.so&lt;br /&gt;
&lt;br /&gt;
account         required        pam_unix.so&lt;br /&gt;
account         sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
&lt;br /&gt;
password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3&lt;br /&gt;
password        required        pam_unix.so try_first_pass use_authtok nullok sha512 shadow&lt;br /&gt;
password        sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
password        required        pam_deny.so&lt;br /&gt;
&lt;br /&gt;
session         required        pam_limits.so&lt;br /&gt;
session         required        pam_env.so&lt;br /&gt;
session         required        pam_unix.so&lt;br /&gt;
session         sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test the Setup ===&lt;br /&gt;
 nslcd -d&lt;br /&gt;
&lt;br /&gt;
=== Update the Default Run Levels ===&lt;br /&gt;
 rc-update add nslcd default&lt;br /&gt;
 rc-update add nscd default&lt;br /&gt;
&lt;br /&gt;
=== Start the necessary Daemons ===&lt;br /&gt;
 /etc/init.d/nslcd start&lt;br /&gt;
 /etc/init.d/nscd start&lt;br /&gt;
&lt;br /&gt;
== Quota ==&lt;br /&gt;
=== 32-bit Project Identifier Support ===&lt;br /&gt;
We need to enable 32-bit project identifier support (PROJID32BIT feature) for our naming scheme (uid numbers larger than 65&#039;536), which is already the default on the stepping stone virtual machines:&lt;br /&gt;
 mkfs.xfs &#039;&#039;&#039;-i projid32bit=1&#039;&#039;&#039; /dev/vg-local-01/var&lt;br /&gt;
&lt;br /&gt;
=== Update /etc/fstab and Mount ===&lt;br /&gt;
Make sure, that you have user quota (uqota) and project quota (pquota) set as options on the chosen mount point in /etc/fstab. For example:&lt;br /&gt;
 LABEL=LV-VAR            /var            xfs             noatime,discard,inode64,uquota,pquota  0 2&lt;br /&gt;
&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
Check, if everything went ok:&lt;br /&gt;
 df -h | grep var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var  1023G  220G  804G  22% /var&lt;br /&gt;
&lt;br /&gt;
=== Verify ===&lt;br /&gt;
Some important options for xfs_quota:&lt;br /&gt;
* -x: Enable expert mode.&lt;br /&gt;
* -c: Pass arguments on the command line. Multiple arguments may be given.&lt;br /&gt;
&lt;br /&gt;
Remount the file system /var and check, if /var has the desired values:&lt;br /&gt;
 xfs_quota -x -c state /var&lt;br /&gt;
&lt;br /&gt;
As you can see (items marked bold), we have achieved our goal:&lt;br /&gt;
 User quota state on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
   Accounting: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Enforcement: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Inode: #131 (1 blocks, 1 extents)&lt;br /&gt;
 Group quota state on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
   Accounting: OFF&lt;br /&gt;
   Enforcement: OFF&lt;br /&gt;
   Inode: #132 (1 blocks, 1 extents)&lt;br /&gt;
 Project quota state on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
   Accounting: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Enforcement: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Inode: #132 (1 blocks, 1 extents)&lt;br /&gt;
 Blocks grace time: [7 days 00:00:30]&lt;br /&gt;
 Inodes grace time: [7 days 00:00:30]&lt;br /&gt;
 Realtime Blocks grace time: [7 days 00:00:30]&lt;br /&gt;
&lt;br /&gt;
=== User Quotas ===&lt;br /&gt;
==== Adding a User Quota ====&lt;br /&gt;
Set a quota of 1 Gigabyte for the user 4000187 (the values are in kilobytes, so 1048576 kilobyte are 1024 megabytes which corresponds to 1 gigabyte):&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Or in bytes:&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=1073741824 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Read the quota information for the user 4000187:&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -u 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var                     0          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
If the user has data in the project, that belongs to him, the result will change:&lt;br /&gt;
 /dev/mapper/vg--local--01-var                512000          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
==== Modifiying a User Quota ====&lt;br /&gt;
To modify a users quota, you just set a new quota (limit):&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Read the quota information for the user 4000187:&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -u 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var                     0          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
If the user has data in the project, that belongs to him, the result will change:&lt;br /&gt;
 /dev/mapper/vg--local--01-var                512000          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
==== Removing a User Quota ====&lt;br /&gt;
Removing a quota for a user:&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=0 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
The following command should give you an empty result:&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -u 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
=== Project (Directory) Quotas ===&lt;br /&gt;
==== Adding a Project (Directory) Quota ====&lt;br /&gt;
The XFS file system additionally allows you to set quotas on individual directory hierarchies in the file system that are known as managed trees. Each managed tree is uniquely identified by a project ID and an optional project name. We&#039;ll use the following values in the examples:&lt;br /&gt;
* project_ID: The uid of the online backup account (4000187).&lt;br /&gt;
* project_name: The uid of the online backup account (4000187). This could be a human readable name.&lt;br /&gt;
* mountpoint: The mountpoint of the xfs-filesystem (/var). See the &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt; entry from above.&lt;br /&gt;
* directory: The directory of the project (187/4000187), starting from the mountpoint of the xfs-filesystem (/var).&lt;br /&gt;
&lt;br /&gt;
Define a unique project ID for the directory hierarchy in the &amp;lt;code&amp;gt;/etc/projects&amp;lt;/code&amp;gt; file (project_ID:mountpoint/directory):&lt;br /&gt;
 echo &amp;quot;4000187:/var/backup/187/4000187/home/4000187&amp;quot; &amp;gt;&amp;gt; /etc/projects&lt;br /&gt;
&lt;br /&gt;
Create an entry in the &amp;lt;code&amp;gt;/etc/projid&amp;lt;/code&amp;gt; file that maps a project name to the project ID (project_name:project_ID):&lt;br /&gt;
 echo &amp;quot;4000187:4000187&amp;quot; &amp;gt;&amp;gt; /etc/projid&lt;br /&gt;
&lt;br /&gt;
Set Project:&lt;br /&gt;
 xfs_quota -x -c &#039;project -s -p /var/backup/187/4000187/home/4000187 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Set Quota (limit) on Project:&lt;br /&gt;
 xfs_quota -x -c &#039;limit -p bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Check your Quota (limit)&lt;br /&gt;
 xfs_quota -x -c &#039;quota -p 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Check the Quota:&lt;br /&gt;
* &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;: increase verbosity in reporting (also dumps zero values).&lt;br /&gt;
* &amp;lt;code&amp;gt;-N&amp;lt;/code&amp;gt;: suppress the initial header.&lt;br /&gt;
* &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;: display project quota information.&lt;br /&gt;
* &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt;: human readable format.&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -p 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var                     0          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
If you copied data into the project, the output will look something like:&lt;br /&gt;
 /dev/mapper/vg--local--01-var                512000          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
To give you an overall view of the whole system:&lt;br /&gt;
 xfs_quota -x -c report /var&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User quota on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
                               Blocks                     &lt;br /&gt;
User ID          Used       Soft       Hard    Warn/Grace     &lt;br /&gt;
---------- -------------------------------------------------- &lt;br /&gt;
root          1024000          0          0     00 [--------]&lt;br /&gt;
4000187             0          0    1048576     00 [--------]&lt;br /&gt;
&lt;br /&gt;
Project quota on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
                               Blocks                     &lt;br /&gt;
Project ID       Used       Soft       Hard    Warn/Grace     &lt;br /&gt;
---------- -------------------------------------------------- &lt;br /&gt;
4000187        512000          0    1048576     00 [--------]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifying a Project (Directory) Quota ====&lt;br /&gt;
To modify a project (directory) quota, you just set an new quota (limit) on the chosen project:&lt;br /&gt;
 xfs_quota -x -c &#039;limit -p bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Check your quota (limit)&lt;br /&gt;
 xfs_quota -x -c &#039;quota -p 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
==== Removing a Project (Directory) Quota ====&lt;br /&gt;
Removing a quota from a project:&lt;br /&gt;
 xfs_quota -x -c &#039;limit -p bhard=0 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Chreck the results:&lt;br /&gt;
 xfs_quota -x -c report /var&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User quota on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
                               Blocks                     &lt;br /&gt;
User ID          Used       Soft       Hard    Warn/Grace     &lt;br /&gt;
---------- -------------------------------------------------- &lt;br /&gt;
root           512000          0          0     00 [--------]&lt;br /&gt;
4000187             0          0       1024     00 [--------]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the line with the Project ID 4000187 has disappeared:&lt;br /&gt;
 4000187        512000          0    1048576     00 [--------]&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to remove the project from &amp;lt;code&amp;gt;/etc/projects&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/projid&amp;lt;/code&amp;gt;:&lt;br /&gt;
 sed -i -e &#039;/4000187/d&#039; /etc/projects&lt;br /&gt;
 sed -i -e &#039;/4000187/d&#039; /etc/projid&lt;br /&gt;
&lt;br /&gt;
=== Some important notes concerning XFS ===&lt;br /&gt;
# The &#039;&#039;&#039;quotacheck&#039;&#039;&#039; command has no effect on XFS filesystems. The first time quota accounting is turned on (at mount time), XFS does an automatic quotacheck internally; afterwards, the quota system will always be completely consistent until quotas are manually turned off. &lt;br /&gt;
# There is &#039;&#039;&#039;no need for quota file(s)&#039;&#039;&#039; in the root of the XFS filesystem.&lt;br /&gt;
&lt;br /&gt;
== prov-backup-rsnapshot ==&lt;br /&gt;
Install the [[stoney_backup:_prov-backup-rsnapshot | prov-backup-rsnasphot ]] daemon script using the package manager:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -va sys-apps/sst-prov-backup-rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
If it is the first provisioning module running on this server (very likely) you first have to configure the provisioning daemon (you can skip this step if you have already another provisioning module running on this server)&lt;br /&gt;
&lt;br /&gt;
==== Provisioning global configuration ====&lt;br /&gt;
The global configuration for the provisioning daemon applies to all provisioning modules (@PAT: how where they installed? --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 09:58, 19 June 2014 (CEST)) running on the server. This configuration therefore contains information about the provisioning daemon itself and no information at all about the specific modules. &lt;br /&gt;
 /etc/Provisioning/Global.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2012 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 0&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# The number of seconds to wait before retry contacting the backend server during startup.&lt;br /&gt;
SLEEP = 10&lt;br /&gt;
&lt;br /&gt;
# Number of backend server connection retries during startup.&lt;br /&gt;
ATTEMPTS = 3&lt;br /&gt;
&lt;br /&gt;
[Operation Mode]&lt;br /&gt;
# The number of seconds to wait before retry contacting the backend server in case of a service interruptions.&lt;br /&gt;
SLEEP = 30&lt;br /&gt;
&lt;br /&gt;
# Number of backend server connection retries in case of a service interruptions.&lt;br /&gt;
ATTEMPTS = 3&lt;br /&gt;
&lt;br /&gt;
[Mail]&lt;br /&gt;
# Error messages are sent to the mail configured below.&lt;br /&gt;
SENDTO = &amp;lt;YOUR-MAIL-ADDRESS&amp;gt;&lt;br /&gt;
HOST = mail.stepping-stone.ch&lt;br /&gt;
PORT = 587&lt;br /&gt;
USERNAME = &amp;lt;YOUR-NOTIFICATION-EMAIL-ADDRESS&amp;gt;&lt;br /&gt;
PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
FROMNAME = Provisioning daemon&lt;br /&gt;
CA_DIR = /etc/ssl/certs&lt;br /&gt;
SSL = starttls&lt;br /&gt;
AUTH_METHOD = LOGIN&lt;br /&gt;
&lt;br /&gt;
# Additionally, you can be informed about creation, modification and deletion of services.&lt;br /&gt;
WANTINFOMAIL = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Provisioning daemon prov-backup-rsnapshot module ====&lt;br /&gt;
The module specific configuration is located in /etc/Provisioning/&amp;lt;Service&amp;gt;/&amp;lt;Type&amp;gt;.conf. In the case of the prov-backup-rsnapshot module this is &amp;lt;code&amp;gt;/etc/Provisioning/Backup/Rsnapshot.conf&amp;lt;/code&amp;gt;. (Note: Comments starting with /* are not in the configuration file, they are only in the wiki to add some additional information)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2013 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
/* If you want, you can override the log information from the global configuration file this might be useful for debugging */&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
/* Specify the hosts fully qualified domain name. This name will be used to perform some checks and also appear in the information and error mails */&lt;br /&gt;
ENVIRONMENT = &amp;lt;FQDN&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Database]&lt;br /&gt;
BACKEND = LDAP&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.org&lt;br /&gt;
PORT = 636&lt;br /&gt;
ADMIN_USER = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
SERVICE_SUBTREE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
COOKIE_FILE = /etc/Provisioning/Backup/rsnapshot.cookie&lt;br /&gt;
DEFAULT_COOKIE = rid=001,csn=&lt;br /&gt;
SEARCH_FILTER = (&amp;amp;(entryCSN&amp;gt;=%entryCSN%)(sstProvisioningState=0))&lt;br /&gt;
&lt;br /&gt;
/* Specifies the service itself. As it is the prov-backup-rsnapshot module, the SERVICE is &amp;quot;Backup&amp;quot; and the TYPE is &amp;quot;Rsnapshot&amp;quot;.&lt;br /&gt;
 * The MODUS is as usual selfcare and the TRANSPORTAPI is LocalCLI. This is because the daemon is running on the same host as the&lt;br /&gt;
 * backup accounts are provisioned and the commands can be executed on this host using the cli.&lt;br /&gt;
 * For more information about MODUS and TRANSPORTAPI see https://int.stepping-stone.ch/wiki/provisioning.pl#Service_Konfiguration&lt;br /&gt;
 */&lt;br /&gt;
[Service]&lt;br /&gt;
MODUS = selfcare&lt;br /&gt;
TRANSPORTAPI = LocalCLI&lt;br /&gt;
SERVICE = Backup&lt;br /&gt;
TYPE = Rsnapshot&lt;br /&gt;
&lt;br /&gt;
SYSLOG = prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
/* For the TRANSPORTAPI LocalCLI there is no gateway required because there is no connection to establish. So set HOST, USER and&lt;br /&gt;
 * DSA_FILE to whatever you want. Don&#039;t leave it blank, otherwise the provisioning daemon would log some error messages saying&lt;br /&gt;
 * these attributes are empty &lt;br /&gt;
 */&lt;br /&gt;
[Gateway]&lt;br /&gt;
HOST = localhost&lt;br /&gt;
USER = provisioning&lt;br /&gt;
DSA_FILE = none&lt;br /&gt;
&lt;br /&gt;
/* Information about the backup itself (how to setup everything). Note that the %uid% int the RSNAPSHOT_CONFIG_FILE parameter will&lt;br /&gt;
 * be replaced by the accounts UID. The script CREATE_CHROOT_CMD was installed with the prov-backup-rsnapshot module, so do not&lt;br /&gt;
 * change this parameter. The quota parameters (SET_QUOTA_CMD, MOUNTPOINT, QUOTA_FILE, PROJECTS_FILE and PROJID_FILE) represent &lt;br /&gt;
 * the quota setup as described on http://wiki.stoney-cloud.org/index.php/stoney_backup:_Server_set-up#Quota. If you followed this&lt;br /&gt;
 * manual, you can copy-paste them into your configuration file, otherwise adapt them according to your quota setup.&lt;br /&gt;
 */&lt;br /&gt;
[Backup]&lt;br /&gt;
RSNAPSHOT_CONFIG_FILE = /etc/rsnapshot/rsnapshot.conf.%uid%&lt;br /&gt;
SET_QUOTA_CMD = /usr/sbin/xfs_quota&lt;br /&gt;
CREATE_CHROOT_CMD = /usr/libexec/createBackupDirectory.sh&lt;br /&gt;
MOUNTPOINT = /var&lt;br /&gt;
QUOTA_FILE = /etc/backupSize&lt;br /&gt;
PROJECTS_FILE = /etc/projects&lt;br /&gt;
PROJID_FILE = /etc/projid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== backup utils ==&lt;br /&gt;
Install the backup utils (multiple scripts which help you to manage and monitor your backup server and backup accounts) using the package manager. For more information about the scripts please see the [[stoney_backup:_Server_set-up#stoney_backup_Service_Software | stoney backup Service Software]] section. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -va sys-apps/sst-backup-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Please refer to the configuration sections for the different scripts in [[stoney_backup:_Server_set-up#stoney_backup_Service_Software | stoney backup Service Software]].&lt;br /&gt;
&lt;br /&gt;
= stoney backup Service Software =&lt;br /&gt;
The stoney backup Service comes along with multiple scripts which help you to manage and monitor your backup server and accounts: &lt;br /&gt;
&lt;br /&gt;
We use rsnapshot - remote filesystem snapshot utility for the actual snapshots and a handful of wrapper scripts, that do things like:&lt;br /&gt;
* Read the users and their settings from the LDAP directory.&lt;br /&gt;
* Execute rsnapshot according to the users settings.&lt;br /&gt;
* Write the backup quotas backup (incoming), iterations (.snapshots) and free space to the users local backupSize file and update the LDAP directory.&lt;br /&gt;
* Inform the reseller, customer or user (depending on the settings in the LDAP directory) via mail, if the quota limit has been reached.&lt;br /&gt;
* Depending on the users settings in the LDAP directory, warning mail will be sent to the reseller, customer or user, if a backup was not executed on time.&lt;br /&gt;
&lt;br /&gt;
== writeAccountSize.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeAccountSize.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package and does the following:&lt;br /&gt;
@PAT: Please add a link to the current Git repository. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 10:15, 19 June 2014 (CEST)&lt;br /&gt;
* Calculates the used disk space (backup and iterations) for a given account and writes the corresponding values to:&lt;br /&gt;
*# The LDAP backend (used by the selfcare webinterface to display quota information):&lt;br /&gt;
*#* Backup space used (sstBackupSize): The disk space the account uses for the backup itself (disk space used under the &amp;lt;code&amp;gt;incoming&amp;lt;/code&amp;gt; folder of the users chroot-home directory)&lt;br /&gt;
*#* Snapshot space used (sstIncrementSize): The disk space the account uses for the iterations (disk space under the &amp;lt;code&amp;gt;.snapshot&amp;lt;/code&amp;gt; folder of the users chroot-home directory)&lt;br /&gt;
*# The file &amp;lt;code&amp;gt;etc/backupSize&amp;lt;/code&amp;gt; of the accounts chroot (used by the Sepiola Online Backup client):&lt;br /&gt;
* Checks if the user and/or reseller must be notified that there is no more disk space left for the given account&lt;br /&gt;
** Checks if the notification flag was passed, if not no notification will be triggered&lt;br /&gt;
** Calculates the used disk space (backup and iterations) in percentage&lt;br /&gt;
** Reads the notification threshold value from the LDAP backed&lt;br /&gt;
** If the disk space used (in percentage) is bigger than the value retrieved from the LDAP backend start the [[stoney_cloud:_Notification_Architecture | notification]] process with&lt;br /&gt;
*** Product: Given account UID&lt;br /&gt;
*** Service: Backup&lt;br /&gt;
*** Problem: Quota&lt;br /&gt;
* Pod documentation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    writeAccountSize.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This Script gets quota information from filesystem, size of incoming and&lt;br /&gt;
    snapshots directories, write the data to a file and the LDAP backend and&lt;br /&gt;
    sends an e-mail message for each account that is over quota to users&lt;br /&gt;
    e-mail address (from ldap directory) if notification flag is passed.&lt;br /&gt;
&lt;br /&gt;
    The configuration file for this script is stored in the backup-utils&lt;br /&gt;
    configuration directory (/etc/backup-utils/) and is called&lt;br /&gt;
    writeAccountSize.conf.&lt;br /&gt;
&lt;br /&gt;
    The script needs access to the quota program to get quota information.&lt;br /&gt;
    The script needs ldap access to get users e-mail address and quota&lt;br /&gt;
    information. The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
    -C configfile&lt;br /&gt;
        The configuration file.&lt;br /&gt;
&lt;br /&gt;
    -U uid&lt;br /&gt;
        The user id.&lt;br /&gt;
&lt;br /&gt;
    -n notification&lt;br /&gt;
        Start notification process if quota threshold is reached&lt;br /&gt;
&lt;br /&gt;
    -d debug&lt;br /&gt;
        Turns the debug mode on.&lt;br /&gt;
&lt;br /&gt;
    -h help&lt;br /&gt;
        This online help.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    writeAccountSize.pl -U uid [-C configuration file ] []-d debug] [-h&lt;br /&gt;
    help] [-n]&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2009-04-16 michael.rhyner@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2009-04-16 michael.rhyner@stepping-stone.ch created&lt;br /&gt;
    2009-04-30 michael.rhyner@stepping-stone.ch changed position based quota&lt;br /&gt;
    output parsing with correctly parsed elements&lt;br /&gt;
    2009-06-15 michael.rhyner@stepping-stone.ch added over quota check and&lt;br /&gt;
    sending e-mail&lt;br /&gt;
    2009-06-16 michael.rhyner@stepping-stone.ch renamed script and make it&lt;br /&gt;
    more general usable (e.g. for online backup, online storage, ...)&lt;br /&gt;
    2009-06-17 michael.rhyner@stepping-stone.ch changed mail message to read&lt;br /&gt;
    from a text file instead from configuration parameter&lt;br /&gt;
    2009-06-18 michael.rhyner@stepping-stone.ch corrected wrong regex to&lt;br /&gt;
    weed out the asterisk (*) in getQuotaSize&lt;br /&gt;
    2009-06-19 michael.rhyner@stepping-stone.ch corrected wrong evaluation&lt;br /&gt;
    success from subroutines and avoid message output when not in debug mode&lt;br /&gt;
    2009-06-22 michael.rhyner@stepping-stone.ch getQuotaSize: return&lt;br /&gt;
    immediately if no quota was set&lt;br /&gt;
    2009-06-24 michael.rhyner@stepping-stone.ch alert when used certain&lt;br /&gt;
    percentge of allowed space instead of more than allowed space&lt;br /&gt;
    2009-06-26 michael.rhyner@stepping-stone.ch values are presented in&lt;br /&gt;
    Gigabytes within notification message&lt;br /&gt;
    2009-07-23 michael.rhyner@stepping-stone.ch corrected wrong syslog&lt;br /&gt;
    severities for errors&lt;br /&gt;
    2009-07-24 michael.rhyner@stepping-stone.ch made e-mail address&lt;br /&gt;
    available within message body&lt;br /&gt;
    2013-08-19 pat.klaey@stepping-stone.ch write quota values also to the&lt;br /&gt;
    LDAP&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporate code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Config::IniFiles;&lt;br /&gt;
        Getopt::Std;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        Text::Template;&lt;br /&gt;
        POSIX;&lt;br /&gt;
        Notification;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
 /etc/backup-utils/writeAccountSize.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Global]&lt;br /&gt;
INCOMING_DIRECTORY = /incoming&lt;br /&gt;
ACCOUNT_SIZE_FILE = /etc/backupSize&lt;br /&gt;
SNAPSHOTS = 1&lt;br /&gt;
&lt;br /&gt;
[Syslog]&lt;br /&gt;
SYSLOG = rsnapshot&lt;br /&gt;
&lt;br /&gt;
[Directory]&lt;br /&gt;
LDAP_SERVER = ldaps://ldapm.tombstone.ch&lt;br /&gt;
LDAP_PORT = 636&lt;br /&gt;
LDAP_BIND_DN = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_BIND_PW = &amp;lt;password&amp;gt;&lt;br /&gt;
LDAP_BASE_DN = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_PERSON_BASE = ou=people,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_RESELLER_BASE = ou=reseller,ou=configuration,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_EMAIL_ATTRIBUTE = mail&lt;br /&gt;
&lt;br /&gt;
[Notification]&lt;br /&gt;
EMAIL_SENDER = stepping stone GmbH Supprt &amp;lt;support@stepping-stone.ch&amp;gt;&lt;br /&gt;
EMAIL_ALERT_THRESHOLD = 85&lt;br /&gt;
&lt;br /&gt;
Salutation_Default_de-CH = Liebe Kundin / Lieber Kunde&lt;br /&gt;
Salutation_m_de-CH = Sehr geehrter Herr&lt;br /&gt;
Salutation_f_de-CH = Sehr geehrte Frau&lt;br /&gt;
Salutation_Default_en-GB = Dear customer&lt;br /&gt;
Salutation_m_en-GB = Dear Mr.&lt;br /&gt;
Salutation_f_en-GB = Dear Mrs.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
 /usr/libexec/backup-utils/writeAccountSize.pl -U 4000080 -d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Debug modus was turned on&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersHomeDirectory: $localUsersHomeDirectory: /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersHomeDirectory: The $localUsersHomeDirectory /var/backup/080/4000080/home/4000080 exists&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersHomeDirectory:   /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersIncomingDirectory: /incoming&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localIncomingPath:           /var/backup/080/4000080/home/4000080/incoming&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: The $localIncomingPath /var/backup/080/4000080/home/4000080/incoming exists&lt;br /&gt;
Total Quota: 1048576 kilobytes&lt;br /&gt;
Total used Space: 0 kilobytes&lt;br /&gt;
Incoming Size: 0 kilobytes&lt;br /&gt;
Debug sub getSnapshotsSize: $localUsedQuota:   0&lt;br /&gt;
Debug sub getSnapshotsSize: $localSnapshotsSize:   0&lt;br /&gt;
Debug writeAccountSize: Working on /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
Debug: wrote 1024 0 0 to /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstBackupSize =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstIncrementSize =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
Alert Threshold: 85 %&lt;br /&gt;
Calculated value: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now write some data (200 megaytes in this example) into the users incoming directory and then execute the script again:&lt;br /&gt;
 dd if=/dev/zero of=/var/backup/080/4000080/home/4000080/incoming/test.zeros bs=1024k count=200&lt;br /&gt;
 chown 4000080:4000080 /var/backup/080/4000080/home/4000080/incoming/test.zeros&lt;br /&gt;
 /usr/libexec/backup-utils/writeAccountSize.pl -U 4000080 -d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Debug modus was turned on&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersHomeDirectory: $localUsersHomeDirectory: /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersHomeDirectory: The $localUsersHomeDirectory /var/backup/080/4000080/home/4000080 exists&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersHomeDirectory:   /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersIncomingDirectory: /incoming&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localIncomingPath:           /var/backup/080/4000080/home/4000080/incoming&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: The $localIncomingPath /var/backup/080/4000080/home/4000080/incoming exists&lt;br /&gt;
Total Quota: 1048576 kilobytes&lt;br /&gt;
Total used Space: 204800 kilobytes&lt;br /&gt;
Incoming Size: 204800 kilobytes&lt;br /&gt;
Debug sub getSnapshotsSize: $localUsedQuota:   204800&lt;br /&gt;
Debug sub getSnapshotsSize: $localSnapshotsSize:   0&lt;br /&gt;
Debug writeAccountSize: Working on /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
Debug: wrote 1024 200 0 to /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstBackupSize =&amp;gt; 209715200&lt;br /&gt;
&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstIncrementSize =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
Alert Threshold: 85 %&lt;br /&gt;
Calculated value: 19.53125&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Everything seems to be working fine!&lt;br /&gt;
&lt;br /&gt;
== snapshot.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/snapshot.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package and does the following:&lt;br /&gt;
* Read interval parameter value passed&lt;br /&gt;
** The interval parameter value can be daily, weekly, monthly (or yearly)&lt;br /&gt;
* Find all backup active accounts for which the rsnapshot command must be executed (depending on the given interval)&lt;br /&gt;
** Filter to find these accounts: &amp;lt;code&amp;gt;(&amp;amp;(sstBackupInterval&amp;lt;INTERVAL&amp;gt;=*)(sstIsActive=TRUE))&amp;lt;/code&amp;gt; for example for the daily rsnapshot the filter is &amp;lt;code&amp;gt;(&amp;amp;(sstBackupIntervalDaily=*)(sstIsActive=TRUE))&amp;lt;/code&amp;gt;&lt;br /&gt;
*** In other words this means: Get me all acounts that have for &amp;lt;code&amp;gt;sstBackupInterval&amp;lt;INTERVAL&amp;gt;&amp;lt;/code&amp;gt; a value defined AND &amp;lt;code&amp;gt;sstIsActive&amp;lt;/code&amp;gt; is set to &amp;quot;TRUE&amp;quot;&lt;br /&gt;
* According to the interval given and the account UID calculate the rsnapshot command for all these accounts&lt;br /&gt;
** For example&lt;br /&gt;
*** Account UID: 4000000 &lt;br /&gt;
*** Interval: daily&lt;br /&gt;
*** Resulting rsnapshot command: /usr/bin/nice -n 19 /usr/bin/rsnapshot  -c /etc/rsnapshot/rsnapshot.conf.4000000 daily (if you use the [[#snapshot.pl_Configuration | configuration]] below)&lt;br /&gt;
* Execute all these commands&lt;br /&gt;
** Use controlled parallel execution, you can specify how many commands can be executed in parallel (see [[#snapshot.pl_Configuration | configuration]] below)&lt;br /&gt;
* Pod documentation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    snapshot.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script gets all active online backup accounts from the LDAP backend&lt;br /&gt;
    for which the rsnapshot process for the given interval must be executed.&lt;br /&gt;
    According to these accounts and the given interval, the commands to be&lt;br /&gt;
    executed are generated and finally executed. The commands can be&lt;br /&gt;
    executed in parallel, however there is a limit defined in the&lt;br /&gt;
    configuration file which limits the amount of parallel running&lt;br /&gt;
    processes.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    ./snapshot.pl --interval interval [--debug] [--help]&lt;br /&gt;
&lt;br /&gt;
OPTIONS&lt;br /&gt;
    --interval/-i interval&lt;br /&gt;
        Specifies the rsnapshot interval (can be hourly, daily, weekly,&lt;br /&gt;
        monthly or yearly)&lt;br /&gt;
&lt;br /&gt;
    --debug/-d&lt;br /&gt;
        Turns on debug mode&lt;br /&gt;
&lt;br /&gt;
    --help/-h&lt;br /&gt;
        Shows this help&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2012-03-19 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2012-03-19 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporated code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Getopt::Long;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        Parallel::ForkManager;&lt;br /&gt;
        Time::Stopwatch;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
There are two things to do in this step: &lt;br /&gt;
* Configure the rsnapshot root directory&lt;br /&gt;
* Configure the snapshot.pl script itself&lt;br /&gt;
&lt;br /&gt;
==== rsnaphot configuration directory ====&lt;br /&gt;
The users individual rsnapshot configurations are stored under &amp;lt;code&amp;gt;/etc/rsnapshot&amp;lt;/code&amp;gt;. Please make sure, that the directory exists:&lt;br /&gt;
 ls -al /etc | grep rsnapshot&lt;br /&gt;
&lt;br /&gt;
 drwx------  2 root   root      64 30. Aug 20:20 rsnapshot&lt;br /&gt;
&lt;br /&gt;
If not, create it:&lt;br /&gt;
 mkdir /etc/rsnapshot&lt;br /&gt;
 chmod 700 /etc/rsnapshot&lt;br /&gt;
&lt;br /&gt;
==== snapshot.pl Configuration ====&lt;br /&gt;
The snapshot.pl script is responsible for the execution of rsnapshot according to the users settings.&lt;br /&gt;
 /etc/backup-utils/snapshot.conf &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[General]&lt;br /&gt;
MaxParallelProcesses = 5&lt;br /&gt;
Rsnapshot_command = /usr/bin/nice -n 19 /usr/bin/rsnapshot  -c /etc/rsnapshot/rsnapshot.conf.%uid% %interval%&lt;br /&gt;
&lt;br /&gt;
[LDAP]&lt;br /&gt;
Host = ldaps://ldapm.tombstone.ch&lt;br /&gt;
Port = 636&lt;br /&gt;
User = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
Password = &amp;lt;Password&amp;gt;&lt;br /&gt;
CA_Path = /etc/ssl/certs&lt;br /&gt;
Accounts_Base = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Legend: At runtime the following placeholders are replaced as follows&lt;br /&gt;
* &#039;&#039;&#039;%uid%&#039;&#039;&#039;: The backup account and login uid as a numeric number. For example: 4000205.&lt;br /&gt;
* &#039;&#039;&#039;%interval%&#039;&#039;&#039;: The backup level to be executed. Possible values are hourly, daily, weekly, monthly and yearly.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
Before adding the necessary cronjob entries, we need to make sure, that we&#039;ve configured the snapshot.pl script correctly:&lt;br /&gt;
 /usr/libexec/backup-utils/snapshot.pl --interval daily -d&lt;br /&gt;
&lt;br /&gt;
If everything worked as planned, you should receive feedback looking roughly like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INFO:  Starting rsnapshot for interval daily with maximum 5 parallel processes&lt;br /&gt;
&lt;br /&gt;
INFO:  Executing snapshot for 4000080&lt;br /&gt;
&lt;br /&gt;
INFO:  Executing snapshot for 4000079&lt;br /&gt;
&lt;br /&gt;
INFO:  Snapshot process for 4000079 finished in 0.18 seconds with status 0&lt;br /&gt;
&lt;br /&gt;
INFO:  Snapshot process for 4000080 finished in 0.19 seconds with status 0&lt;br /&gt;
&lt;br /&gt;
INFO:  rsnapshot for all backups done. Took 0.24 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just to make sure, that everything did work out fine, execute &amp;lt;code&amp;gt;writeAccountSize.pl&amp;lt;/code&amp;gt; again:&lt;br /&gt;
 /usr/libexec/backup-utils/writeAccountSize.pl -U 4000080 -d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Debug modus was turned on&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersHomeDirectory: $localUsersHomeDirectory: /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersHomeDirectory: The $localUsersHomeDirectory /var/backup/080/4000080/home/4000080 exists&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersHomeDirectory:   /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersIncomingDirectory: /incoming&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localIncomingPath:           /var/backup/080/4000080/home/4000080/incoming&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: The $localIncomingPath /var/backup/080/4000080/home/4000080/incoming exists&lt;br /&gt;
Total Quota: 1048576 kilobytes&lt;br /&gt;
Total used Space: 409600 kilobytes&lt;br /&gt;
Incoming Size: 204800 kilobytes&lt;br /&gt;
Debug sub getSnapshotsSize: $localUsedQuota:   409600&lt;br /&gt;
Debug sub getSnapshotsSize: $localSnapshotsSize:   204800&lt;br /&gt;
Debug writeAccountSize: Working on /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
Debug: wrote 1024 200 200 to /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstBackupSize =&amp;gt; 209715200&lt;br /&gt;
&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstIncrementSize =&amp;gt; 209715200&lt;br /&gt;
&lt;br /&gt;
Alert Threshold: 85 %&lt;br /&gt;
Calculated value: 39.0625&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the total used space has risen to 39.0625.&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs ===&lt;br /&gt;
After making sure, that everything worked as planned, you can update your crontab entry:&lt;br /&gt;
 crontab -e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Rsnapshot for all users&lt;br /&gt;
30 22 * * * /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
15 22 * * sun /usr/libexec/backup-utils/snapshot.pl --interval weekly&lt;br /&gt;
00 22 1 * * /usr/libexec/backup-utils/snapshot.pl --interval monthly&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TBD: Maybe this is not optimal if there is a lot of data to rotate. In this case, it might be that for example weekly and daily snapshot both run at the same time what might lead to strange results. &lt;br /&gt;
* Workarounds: &lt;br /&gt;
** Simple/short version: Instead one could create another wrapper script which is called everyday and does some simple logic:&lt;br /&gt;
** Is today the first day of a month? &lt;br /&gt;
*** Yes: Is today sunday? &lt;br /&gt;
**** Yes: Execute monthly then weekly then daily rsnapshots using the snapshot.pl script (but wait for each interval to finish before starting the next)&lt;br /&gt;
**** No: Execute monthly then daily rsnapshots using the snapshot.pl script (but wait for monthly interval to finish before starting the daily)&lt;br /&gt;
*** No: Is today sunday?&lt;br /&gt;
**** Yes: Execute weekly then daily rsnapshots using the snapshot.pl script (but wait for weekly interval to finish before starting the daily)&lt;br /&gt;
**** No: Execute daily rsnapshots using the snapshot.pl script&lt;br /&gt;
** Complex/long version: Adapt the snapshot.pl script and call it every day without interval parameter. The script does the logic described above.&lt;br /&gt;
This avoids the above mentioned collision&lt;br /&gt;
&lt;br /&gt;
(Complex) / short version: rule via cronjobs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Rsnapshot for all users&lt;br /&gt;
30 22 * * 1-6 [ $( date +\%d ) -gt 1 ] &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
15 22 * * 7 [ $( date +\%d ) -gt 1 ] &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval weekly &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
00 22 1 * * /usr/libexec/backup-utils/snapshot.pl --interval monthly &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval weekly &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== scheduleWarning.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/scheduleWarning.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package and does the following:&lt;br /&gt;
* The basic task of this script is simple: For the given account&lt;br /&gt;
** Check if the planned backups were started&lt;br /&gt;
*** If not, start the [[stoney_cloud:_Notification_Architecture | notification]] process with&lt;br /&gt;
**** Product: Given account UID&lt;br /&gt;
**** Service: Backup&lt;br /&gt;
**** Problem: Schedule &lt;br /&gt;
** Check if the planned backups finished successfully&lt;br /&gt;
*** If not, start the [[stoney_cloud:_Notification_Architecture | notification]] process with&lt;br /&gt;
**** Product: Given account UID&lt;br /&gt;
**** Service: Backup&lt;br /&gt;
**** Problem: Unsuccessful&lt;br /&gt;
&lt;br /&gt;
As the backup clients distributed by stepping stone GmbH upload metadata XML before (scheduling information and start time) and after (end time and backup status) the actual backup, the scheduleWarning.pl script is able to verify whether or not a planned backup has been executed and whether or not the backup was successful. &lt;br /&gt;
&lt;br /&gt;
* Pod documentation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    scheduleWarning.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script tests whether a planed backup was successful or not. There&lt;br /&gt;
    are two different typs of failure.&lt;br /&gt;
&lt;br /&gt;
    1. The Backup did not start&lt;br /&gt;
        The first type of error is that a backup is scheduled for YYYY-MM-DD&lt;br /&gt;
        at HH:MM, but the backup don&#039;t start at this specified time. A&lt;br /&gt;
        possible reason could be that the computer was shut down.&lt;br /&gt;
&lt;br /&gt;
    2.The backup was not successful&lt;br /&gt;
        The second type of error is that a backup started as scheduled but&lt;br /&gt;
        did not finish successfully. There are different reasons for this&lt;br /&gt;
        error.&lt;br /&gt;
&lt;br /&gt;
    If a backup wasn&#039;t successful the script checks which type of error&lt;br /&gt;
    occured. It reads the XML files which are stored on the server and&lt;br /&gt;
    compares the given information. If the error is detected, the script&lt;br /&gt;
    stats the norification process with the information of the error.&lt;br /&gt;
&lt;br /&gt;
    If a user has more than one computer backed-up, the script tests one&lt;br /&gt;
    computer after the other. The mail(s) sent by the programm also&lt;br /&gt;
    contain(s) the information which computer is affected.&lt;br /&gt;
&lt;br /&gt;
OPTION&lt;br /&gt;
    -U uid&lt;br /&gt;
        The -U option is required to run the script, it indicates for which&lt;br /&gt;
        uid the script is executed.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    scheduleWarning.pl [-U user]&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2010-04-14 created Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2010-04-14 v0.01, created pkl&lt;br /&gt;
    2010-08-24 v0.02, modified pkl&lt;br /&gt;
        New using Net::SMTP::TLS to send mails&lt;br /&gt;
&lt;br /&gt;
    2013-09-13 v0.03, modified pat.klaey@stepping-stone.ch&lt;br /&gt;
        Changes to use the script with the new backup infrastructure (read&lt;br /&gt;
        more information from LDAP, use Notification lib to send mails)&lt;br /&gt;
&lt;br /&gt;
USES&lt;br /&gt;
    strict;&lt;br /&gt;
    warnings;&lt;br /&gt;
    XML::Simple;&lt;br /&gt;
    Config::IniFiles;&lt;br /&gt;
    XML::Validator::Schema;&lt;br /&gt;
    Date::Calc qw(:all);&lt;br /&gt;
    Date::Manip;&lt;br /&gt;
    Schedule::Cron::Events;&lt;br /&gt;
    DateTime::Format::Strptime;&lt;br /&gt;
    Sys::Syslog;&lt;br /&gt;
    XML::SAX::ParserFactory;&lt;br /&gt;
    Getopt::Std;&lt;br /&gt;
    MIME::Base64;&lt;br /&gt;
    Authen::SASL;&lt;br /&gt;
    Net::LDAPS;&lt;br /&gt;
    Net::SMTP::TLS;&lt;br /&gt;
    Cwd &#039;abs_path&#039;;&lt;br /&gt;
    PerlUtil::Logging;&lt;br /&gt;
    PerlUtil::LDAPUtil;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
 /etc/backup-utils/scheduleWarning.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Backup]&lt;br /&gt;
CHROOT_DIRECTORY = /var/backup/%lastthree%/%user%&lt;br /&gt;
&lt;br /&gt;
[XML]&lt;br /&gt;
SCHEDULE_FILE = %homeDirectory%/incoming/%computerName%/.sepiola_backup/scheduler.xml&lt;br /&gt;
SCHEDULE_XSD = /etc/backup-utils/schema/scheduler_schema.xsd&lt;br /&gt;
BACKUP_ENDED_FILE = %homeDirectory%/incoming/%computerName%/.sepiola_backup/backupEnded.xml&lt;br /&gt;
BACKUP_ENDED_XSD = /etc/backup-utils/schema/backupended_schema.xsd&lt;br /&gt;
BACKUP_STARTED_FILE = %homeDirectory%/incoming/%computerName%/.sepiola_backup/backupStarted.xml&lt;br /&gt;
BACKUP_STARTED_XSD = /etc/backup-utils/schema/backupstarted_schema.xsd&lt;br /&gt;
&lt;br /&gt;
[TEMPLATE]&lt;br /&gt;
Salutation_Default_de-CH = Liebe Kundin / Lieber Kunde&lt;br /&gt;
Salutation_m_de-CH = Sehr geehrter Herr&lt;br /&gt;
Salutation_f_de-CH = Sehr geehrte Frau&lt;br /&gt;
Salutation_Default_en-GB = Dear customer&lt;br /&gt;
Salutation_m_en-GB = Dear Mr.&lt;br /&gt;
Salutation_f_en-GB = Dear Mrs.&lt;br /&gt;
&lt;br /&gt;
[LDAP]&lt;br /&gt;
&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.ch&lt;br /&gt;
PORT = 636&lt;br /&gt;
DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
ADMIN_DN = cn=Manager,dc=stoney-cloud,dc=org &lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;Password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BACKUP_BASE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
PEOPLE_BASE = ou=people,dc=stoney-cloud,dc=org&lt;br /&gt;
RESELLER_BASE = ou=reseller,ou=configuration,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
SCOPE = sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== checkBackups.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeDate.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package. It is a wrapper around the above mentioned &amp;lt;code&amp;gt;writeAccountSize.pl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;scheduleWarning.pl&amp;lt;/code&amp;gt; scripts (if you configure it accordingly).&lt;br /&gt;
* As mentioned the script is a wrapper for calling the quota and scheduler information scripts:&lt;br /&gt;
** It gets all active backup accounts from the LDAP directory&lt;br /&gt;
** According to the CLI parameters passed it calles for all these accounts:&lt;br /&gt;
*** The quota checking script (this script can be defined in the configuration file, see [[stoney_backup:_Server_set-up#Configuration_6 | configuration]] section below)&lt;br /&gt;
*** The scheduler checking script (this script can be defined in the configuration file, see [[stoney_backup:_Server_set-up#Configuration_6 | configuration]] section below)&lt;br /&gt;
* Pod documentation: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    checkBackups.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script processes all active backup accounts and checks (according&lt;br /&gt;
    to the command line options) the quota and/or the scheduled backups for&lt;br /&gt;
    the given accounts.&lt;br /&gt;
&lt;br /&gt;
    The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
OPTIONS&lt;br /&gt;
    --schedule/-s&lt;br /&gt;
        Checks schedule information by calling the defined script&lt;br /&gt;
&lt;br /&gt;
    --quota/-s&lt;br /&gt;
        Checks the quota values by calling the defined script&lt;br /&gt;
&lt;br /&gt;
    --notify/-n&lt;br /&gt;
        Passes the notify flag to the called scripts&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    ./checkBackups.pl [--quota] [--schedule] [--notify]&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --quota&lt;br /&gt;
        Checks and writes the quota for all active backup accounts. The user&lt;br /&gt;
        and/or reseller will NOT be informed if any quota threshold is&lt;br /&gt;
        reached&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --quota --notify&lt;br /&gt;
        Checks and writes the quota for all active backup accounts. The user&lt;br /&gt;
        and/or reseller will be informed if any quota threshold is reached.&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --schedule&lt;br /&gt;
        Checkes all active backup account if the scheduled backup was&lt;br /&gt;
        executed and successful. The --schedule option will allways trigger&lt;br /&gt;
        a notification mail to the user and/or reseller.&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --schedule --quota&lt;br /&gt;
        Checks both, quota and schedule, for all active backup accounts.&lt;br /&gt;
        Only schedule will trigger notification mails.&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --schedule --quota --notify&lt;br /&gt;
        Checks both, quota and schedule, for all active backup accounts.&lt;br /&gt;
        Both, quota and schedule, will trigger notification mails.&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2013-09-17 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2013-09-17 pat.klaey@stepping-stone.ch created&lt;br /&gt;
    2013-11-19 pat.klaey@stepping-stone.ch Added options to be able to check&lt;br /&gt;
    quota, schedule or both in one run&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporated code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Getopt::Long;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
        Cwd &#039;abs_path&#039;;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
In the configuration you have to define two simple things: &lt;br /&gt;
# Which script to call for quota checks and scheduler checks&lt;br /&gt;
# How to access the LDAP backend&lt;br /&gt;
 /etc/backup-utils/checkBackups.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Scripts]&lt;br /&gt;
CheckQuotaScript = /usr/libexec/backup-utils/writeAccountSize.pl&lt;br /&gt;
CheckScheduleScript = /usr/libexec/backup-utils/scheduleWarning.pl&lt;br /&gt;
&lt;br /&gt;
[LDAP]&lt;br /&gt;
Server = ldaps://ldapm.tombstone.ch&lt;br /&gt;
Port = 636&lt;br /&gt;
Username = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
Password = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
AccountBase = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cronjobs ====&lt;br /&gt;
As you can pass the notification flag to the scripts, you can call the quota script say all 10 minutes. This makes sense if followed the configuration section, as the writeAccountSize.pl script writes the quota values to the LDAP backend which will then be visible in the selfcare webinterface. Like that you have a more or less up to date quota representation in the selfcare webinterface. On the other side, you don&#039;t want to send notification mails to the user every 10 minutes. It might be enough to send them once a day, so the cronjobs may look like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Check backups&lt;br /&gt;
15 12 * * * /usr/libexec/backup-utils/checkBackups.pl --schedule --quota --notify&lt;br /&gt;
&lt;br /&gt;
# Write quota values every 10 minutes&lt;br /&gt;
*/10 * * * * /usr/libexec/backup-utils/checkBackups.pl --quota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ResellerBackupBilling.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeDate.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package. The pod documentation says all what needs to be said about this script.&lt;br /&gt;
* Pod documentation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    ResellerBackupBilling.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script processes the reseller with the passed UID and creates a&lt;br /&gt;
    very simplistic backup-billing overview which then is sent to the&lt;br /&gt;
    address specified in the configuration file. The billing overview&lt;br /&gt;
    contains all backup accounts which belong to the given reseller as well&lt;br /&gt;
    as their quota. According to the billing plan specified in the&lt;br /&gt;
    configuration file, the script also calculates the price for each backup&lt;br /&gt;
    account.&lt;br /&gt;
&lt;br /&gt;
    The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
OPTIONS&lt;br /&gt;
    --reseller/-r UID&lt;br /&gt;
        Process the reseller with this UID&lt;br /&gt;
&lt;br /&gt;
    --debug/-d&lt;br /&gt;
        Turn on debug mode&lt;br /&gt;
&lt;br /&gt;
    --help/-h&lt;br /&gt;
        Display this help&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    ./ResellerBackupBilling.pl --reseller UID [--debug] [--help]&lt;br /&gt;
&lt;br /&gt;
    ./ResellerBackupBilling.pl --reseller 2000000&lt;br /&gt;
        This processes the reseller with the UID 200000 and sends the&lt;br /&gt;
        billing overview to the address specified in the configuration file&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2014-01-24 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2014-01-24 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporated code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Getopt::Long;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
        PerlUtil::Mail;&lt;br /&gt;
        Number::Format;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        Cwd &#039;abs_path&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
You have to configure basically three things:&lt;br /&gt;
# How to access the LDAP directory (similar to the other backup-util scripts)&lt;br /&gt;
# Define a pricing schema&lt;br /&gt;
#* Define a base price for an account&lt;br /&gt;
#* Define a GB price&lt;br /&gt;
#* The total price for each account will finall be: &amp;lt;code&amp;gt;base price + ( quota in GB * GB price )&amp;lt;/code&amp;gt;&lt;br /&gt;
# How to send the mail&lt;br /&gt;
#* You need to enter a valid (outgoing) mail server and corresponding port &lt;br /&gt;
#* User and password to authenticate on the mail server&lt;br /&gt;
#* A valid recipient (typically the company’s backoffice address) and sender&lt;br /&gt;
&lt;br /&gt;
 /etc/backup-utils/ResellerBackupBilling.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[LDAP]&lt;br /&gt;
Server = ldaps://ldapm.tombstone.ch&lt;br /&gt;
Port = 636&lt;br /&gt;
Username = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
Password = &amp;lt;Password&amp;gt;&lt;br /&gt;
AccountBase = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
CustomerBase = ou=customers,dc=stoney-cloud,dc=org&lt;br /&gt;
ResellerBase = ou=reseller,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
[Pricing]&lt;br /&gt;
AccountBasePrice = 5.00&lt;br /&gt;
AccountGBPrice = 0.50&lt;br /&gt;
&lt;br /&gt;
[Mail]&lt;br /&gt;
Server = &amp;lt;Mail-Server&amp;gt;&lt;br /&gt;
Port = 587&lt;br /&gt;
Username = &amp;lt;Sender-Email-Address&amp;gt;&lt;br /&gt;
Password = &amp;lt;Password&amp;gt;&lt;br /&gt;
To = &amp;lt;Backoffice&amp;gt;&lt;br /&gt;
From = Billing Script &amp;lt;E-Mail-Address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== writeDate.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeDate.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package. This is a very simple script, it simply writes the current date and time to a file on the backup server before the rsnapshots rotates the backup. This date is used by the Sepiola Online Backup Client to display the iterations and their dates.&lt;br /&gt;
* Pod documentation: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    writeDate.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script writes the current date and time into the file for each&lt;br /&gt;
    backup before the rsnapshots rotates the backup. This information is&lt;br /&gt;
    used by the Sepiola Online Backup Client.&lt;br /&gt;
&lt;br /&gt;
    The configuration file for this script is stored under&lt;br /&gt;
    /etc/backup-utils/writeDate.conf&lt;br /&gt;
&lt;br /&gt;
    The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
    -C configfile&lt;br /&gt;
        The configuration file.&lt;br /&gt;
&lt;br /&gt;
    -U uid&lt;br /&gt;
        The user id.&lt;br /&gt;
&lt;br /&gt;
    -d debug&lt;br /&gt;
        Turns the debug mode on.&lt;br /&gt;
&lt;br /&gt;
    -h help&lt;br /&gt;
        This online help.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    writeDate.pl [-C configuration_file] [-U uid] [-d debug] [-h help]&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2007-09-16 michael.eichenberger@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2013-09-01 michael.eichenberger@stepping-stone.ch updated to reflect&lt;br /&gt;
    changes in the new backup environment&lt;br /&gt;
&lt;br /&gt;
        2007-09-16 michael.eichenberger@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporate code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Config::IniFiles;&lt;br /&gt;
        Getopt::Std;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
 /etc/backup-utils/writeDate.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Global]&lt;br /&gt;
BACKUP_DIRECTORY = /incoming&lt;br /&gt;
BACKUP_BACKUP_TIME_FILE = /.sepiola_backup/backupTime&lt;br /&gt;
&lt;br /&gt;
[Syslog]&lt;br /&gt;
SYSLOG = rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rsnapshot wrapper bash scripts ==&lt;br /&gt;
There are two rsnapshot wrapper scripts (these are bash scripts), they are installed by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package:&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/libexec/backup-utils/rsnapshotPreExecWrapper.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
** This script is executed before the rsnapshot process and simply calls the [[stoney_backup:_Server_set-up#writeDate.pl | writeDat.pl ]] script.&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/libexec/backup-utils/rsnapshotPostExecWrapper.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
** This script is executed after the rsnapshot process and simply calls the [[stoney_backup:_Server_set-up#writeAccountSize.pl | writeAccountSize.pl ]] script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These scripts do not need any configuration.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [http://www.openldap.org/ OpenLDAP], an open source implementation of the Lightweight Directory Access Protocol.&lt;br /&gt;
* [http://arthurdejong.org/nss-pam-ldapd/ nss-pam-ldapd], a Name Service Switch (NSS) module that allows your LDAP server to provide user account, group, host name, alias, netgroup, and basically any other information that you would normally get from /etc flat files or NIS.&lt;br /&gt;
* [http://www.gentoo.org/doc/de/ldap-howto.xml Gentoo Leitfaden zur OpenLDAP Authentifikation].&lt;br /&gt;
* [http://wiki.gentoo.org/wiki/Centralized_authentication_using_OpenLDAP Centralized authentication using OpenLDAP].&lt;br /&gt;
* [https://code.google.com/p/openssh-lpk/source/browse/trunk/schemas/openssh-lpk_openldap.schema openssh-lpk_openldap.schema] OpenSSH LDAP Public Keys.&lt;br /&gt;
* [http://sourceforge.net/projects/linuxquota/ linuxquota] Linux DiskQuota.&lt;br /&gt;
* [http://www.rsnapshot.org/ rsnapshot], a remote filesystem snapshot utility, based on rsync.&lt;br /&gt;
* [http://olivier.sessink.nl/jailkit/ Jailkit], set of utilities to limit user accounts to specific files using chroot() and or specific commands. Also includes a tool to build a chroot environment.&lt;br /&gt;
* [http://www.busybox.net/ Busybox] BusyBox combines tiny versions of many common UNIX utilities into a single small executable. Useful to reduce the number of files (and thus the complexity) when building a chroot. &lt;br /&gt;
&lt;br /&gt;
[[Category:stoney backup]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_prov-backup-rsnapshot&amp;diff=3684</id>
		<title>stoney backup: prov-backup-rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_prov-backup-rsnapshot&amp;diff=3684"/>
		<updated>2014-06-19T08:09:35Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Test the daemon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This pages contains all necessary information one needs to know about the prov-backup-rsnapshot daemon.&lt;br /&gt;
@PAT: What&#039;s the purpose of the &#039;&#039;prov-backup-rsnapshot daemon&#039;&#039;? Please write a short introduction. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 10:02, 19 June 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
(Note: Comments starting with /* are not in the configuration file, they are only in the wiki to add some additional information)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2013 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
/* If you want, you can override the log information from the global configuration file this might be useful for debugging */&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
/* Specify the hosts fully qualified domain name. This name will be used to perform some checks and also appear in the information and error mails */&lt;br /&gt;
ENVIRONMENT = &amp;lt;FQDN&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Database]&lt;br /&gt;
BACKEND = LDAP&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.org&lt;br /&gt;
PORT = 636&lt;br /&gt;
ADMIN_USER = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
SERVICE_SUBTREE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
COOKIE_FILE = /etc/Provisioning/Backup/rsnapshot.cookie&lt;br /&gt;
DEFAULT_COOKIE = rid=001,csn=&lt;br /&gt;
SEARCH_FILTER = (&amp;amp;(entryCSN&amp;gt;=%entryCSN%)(sstProvisioningState=0))&lt;br /&gt;
&lt;br /&gt;
/* Specifies the service itself. As it is the prov-backup-rsnapshot module, the SERVICE is &amp;quot;Backup&amp;quot; and the TYPE is &amp;quot;Rsnapshot&amp;quot;.&lt;br /&gt;
 * The MODUS is as usual selfcare and the TRANSPORTAPI is LocalCLI. This is because the daemon is running on the same host as the&lt;br /&gt;
 * backup accounts are provisioned and the commands can be executed on this host using the cli.&lt;br /&gt;
 * For more information about MODUS and TRANSPORTAPI see https://int.stepping-stone.ch/wiki/provisioning.pl#Service_Konfiguration&lt;br /&gt;
 */&lt;br /&gt;
[Service]&lt;br /&gt;
MODUS = selfcare&lt;br /&gt;
TRANSPORTAPI = LocalCLI&lt;br /&gt;
SERVICE = Backup&lt;br /&gt;
TYPE = Rsnapshot&lt;br /&gt;
&lt;br /&gt;
SYSLOG = prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
/* For the TRANSPORTAPI LocalCLI there is no gateway required because there is no connection to establish. So set HOST, USER and&lt;br /&gt;
 * DSA_FILE to whatever you want. Don&#039;t leave it blank, otherwise the provisioning daemon would log some error messages saying&lt;br /&gt;
 * these attributes are empty &lt;br /&gt;
 */&lt;br /&gt;
[Gateway]&lt;br /&gt;
HOST = localhost&lt;br /&gt;
USER = provisioning&lt;br /&gt;
DSA_FILE = none&lt;br /&gt;
&lt;br /&gt;
/* Information about the backup itself (how to setup everything). Note that the %uid% int the RSNAPSHOT_CONFIG_FILE parameter will&lt;br /&gt;
 * be replaced by the accounts UID. The script CREATE_CHROOT_CMD was installed with the prov-backup-rsnapshot module, so do not&lt;br /&gt;
 * change this parameter. The quota parameters (SET_QUOTA_CMD, MOUNTPOINT, QUOTA_FILE, PROJECTS_FILE and PROJID_FILE) represent &lt;br /&gt;
 * the quota setup as described on http://wiki.stoney-cloud.org/index.php/stoney_backup:_Server_set-up#Quota. If you followed this&lt;br /&gt;
 * manual, you can copy-paste them into your configuration file, otherwise adapt them according to your quota setup.&lt;br /&gt;
 */&lt;br /&gt;
[Backup]&lt;br /&gt;
RSNAPSHOT_CONFIG_FILE = /etc/rsnapshot/rsnapshot.conf.%uid%&lt;br /&gt;
SET_QUOTA_CMD = /usr/sbin/xfs_quota&lt;br /&gt;
CREATE_CHROOT_CMD = /usr/libexec/createBackupDirectory.sh&lt;br /&gt;
MOUNTPOINT = /var&lt;br /&gt;
QUOTA_FILE = /etc/backupSize&lt;br /&gt;
PROJECTS_FILE = /etc/projects&lt;br /&gt;
PROJID_FILE = /etc/projid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Communication with LDAP =&lt;br /&gt;
The daemon &amp;quot;communicates&amp;quot; with the LDAP to let other processes know its current state. The important attributes therefore are &#039;&#039;&#039;sstProvisioningMode&#039;&#039;&#039; and &#039;&#039;&#039;sstProvisioningState&#039;&#039;&#039; in the given Backup-Account entry. The sequence is defined for adding, modifying or deleting an entry. The preconditions for all three modi are:&lt;br /&gt;
* sstProvisioningMode is set to add, modify or delete&lt;br /&gt;
* sstProvisioningState is set to 0&lt;br /&gt;
* sstProvisioningDate is set to 0 or the current date (format: YYYYMMDD)&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: add&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: adding&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: added&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modify&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modifying&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon has finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modified&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstIsActive: FALSE&lt;br /&gt;
sstProvisioningMode: delete&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: deleting&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: deleted&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Source Code =&lt;br /&gt;
The source code is located in our GitHub Repository:&lt;br /&gt;
&lt;br /&gt;
https://github.com/stepping-stone/prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
== Exit Codes ==&lt;br /&gt;
The following list defines the return codes and their meaning for the ...:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use constant&lt;br /&gt;
{&lt;br /&gt;
    SUCCESS                                 =&amp;gt; 0,&lt;br /&gt;
    UNDEFINED_ERROR                         =&amp;gt; 1,&lt;br /&gt;
    USER_NOT_PRESENT_IN_BACKEND             =&amp;gt; 2,&lt;br /&gt;
    PERL_VERSION_NOT_STATISFIED             =&amp;gt; 3,&lt;br /&gt;
    CANNOT_CHECK_HOME_DIR_PRESENCE          =&amp;gt; 4,&lt;br /&gt;
    CANNOT_CREATE_HOME_DIR                  =&amp;gt; 5,&lt;br /&gt;
    CANNOT_SET_QUOTA                        =&amp;gt; 6,&lt;br /&gt;
    CANNOT_CREATE_RSNAPSHOT_CONFIGURATION   =&amp;gt; 7,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
== Requirements ==&lt;br /&gt;
A working test server set up following the [[stoney_backup:_Server_set-up#prov-backup-rsnapshot | stoney backup: Server set-up]] guide.&lt;br /&gt;
&lt;br /&gt;
== Test the daemon ==&lt;br /&gt;
* The daemon is running on the Backup-Server VM&lt;br /&gt;
** Open a terminal and login to the Backup-Server VM&lt;br /&gt;
** &amp;lt;pre&amp;gt;tail -f /var/log/syslog/provisioning.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Open a second terminal and login to the Backup-Server VM&lt;br /&gt;
** Make sure the directory /root/data exists, if not create it&lt;br /&gt;
** Create an online backup account by executing the test script: &lt;br /&gt;
** &amp;lt;pre&amp;gt;/usr/libexec/createBackupDirectory.sh --uid 3724300&amp;lt;/pre&amp;gt;&lt;br /&gt;
** The test script currently supports the following options: &lt;br /&gt;
*** --uid &amp;lt;UID&amp;gt;: Mandatory option, the backup accounts uid&lt;br /&gt;
*** --reseller &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToResellerUID (default 4000000)&lt;br /&gt;
*** --customer &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToCustomerUID (default 4000001)&lt;br /&gt;
*** --people &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToPersonUID (default 4000002)&lt;br /&gt;
*** --givenname &amp;lt;Name&amp;gt;: Optional, sets the givenname attribute (default &amp;quot;Givenname&amp;quot;)&lt;br /&gt;
*** --surname &amp;lt;Name&amp;gt;: Optional, sets the sn attribute (defualt &amp;quot;Surname&amp;quot;)&lt;br /&gt;
** Load the generated LDIF (you find them under /root/data) step by step into the LDAP and observe what the deamon is doing in the first terminal: &lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/01_add_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/02_modify_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/03_delete_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/04_remove_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@PAT: What are the expected results of this test, how can one verify if it is working correctly? --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 10:09, 19 June 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
[[Category:stoney backup]][[Category:Provisioning Modules]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_prov-backup-rsnapshot&amp;diff=3683</id>
		<title>stoney backup: prov-backup-rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_prov-backup-rsnapshot&amp;diff=3683"/>
		<updated>2014-06-19T08:07:57Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Test the daemon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This pages contains all necessary information one needs to know about the prov-backup-rsnapshot daemon.&lt;br /&gt;
@PAT: What&#039;s the purpose of the &#039;&#039;prov-backup-rsnapshot daemon&#039;&#039;? Please write a short introduction. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 10:02, 19 June 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
(Note: Comments starting with /* are not in the configuration file, they are only in the wiki to add some additional information)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2013 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
/* If you want, you can override the log information from the global configuration file this might be useful for debugging */&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
/* Specify the hosts fully qualified domain name. This name will be used to perform some checks and also appear in the information and error mails */&lt;br /&gt;
ENVIRONMENT = &amp;lt;FQDN&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Database]&lt;br /&gt;
BACKEND = LDAP&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.org&lt;br /&gt;
PORT = 636&lt;br /&gt;
ADMIN_USER = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
SERVICE_SUBTREE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
COOKIE_FILE = /etc/Provisioning/Backup/rsnapshot.cookie&lt;br /&gt;
DEFAULT_COOKIE = rid=001,csn=&lt;br /&gt;
SEARCH_FILTER = (&amp;amp;(entryCSN&amp;gt;=%entryCSN%)(sstProvisioningState=0))&lt;br /&gt;
&lt;br /&gt;
/* Specifies the service itself. As it is the prov-backup-rsnapshot module, the SERVICE is &amp;quot;Backup&amp;quot; and the TYPE is &amp;quot;Rsnapshot&amp;quot;.&lt;br /&gt;
 * The MODUS is as usual selfcare and the TRANSPORTAPI is LocalCLI. This is because the daemon is running on the same host as the&lt;br /&gt;
 * backup accounts are provisioned and the commands can be executed on this host using the cli.&lt;br /&gt;
 * For more information about MODUS and TRANSPORTAPI see https://int.stepping-stone.ch/wiki/provisioning.pl#Service_Konfiguration&lt;br /&gt;
 */&lt;br /&gt;
[Service]&lt;br /&gt;
MODUS = selfcare&lt;br /&gt;
TRANSPORTAPI = LocalCLI&lt;br /&gt;
SERVICE = Backup&lt;br /&gt;
TYPE = Rsnapshot&lt;br /&gt;
&lt;br /&gt;
SYSLOG = prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
/* For the TRANSPORTAPI LocalCLI there is no gateway required because there is no connection to establish. So set HOST, USER and&lt;br /&gt;
 * DSA_FILE to whatever you want. Don&#039;t leave it blank, otherwise the provisioning daemon would log some error messages saying&lt;br /&gt;
 * these attributes are empty &lt;br /&gt;
 */&lt;br /&gt;
[Gateway]&lt;br /&gt;
HOST = localhost&lt;br /&gt;
USER = provisioning&lt;br /&gt;
DSA_FILE = none&lt;br /&gt;
&lt;br /&gt;
/* Information about the backup itself (how to setup everything). Note that the %uid% int the RSNAPSHOT_CONFIG_FILE parameter will&lt;br /&gt;
 * be replaced by the accounts UID. The script CREATE_CHROOT_CMD was installed with the prov-backup-rsnapshot module, so do not&lt;br /&gt;
 * change this parameter. The quota parameters (SET_QUOTA_CMD, MOUNTPOINT, QUOTA_FILE, PROJECTS_FILE and PROJID_FILE) represent &lt;br /&gt;
 * the quota setup as described on http://wiki.stoney-cloud.org/index.php/stoney_backup:_Server_set-up#Quota. If you followed this&lt;br /&gt;
 * manual, you can copy-paste them into your configuration file, otherwise adapt them according to your quota setup.&lt;br /&gt;
 */&lt;br /&gt;
[Backup]&lt;br /&gt;
RSNAPSHOT_CONFIG_FILE = /etc/rsnapshot/rsnapshot.conf.%uid%&lt;br /&gt;
SET_QUOTA_CMD = /usr/sbin/xfs_quota&lt;br /&gt;
CREATE_CHROOT_CMD = /usr/libexec/createBackupDirectory.sh&lt;br /&gt;
MOUNTPOINT = /var&lt;br /&gt;
QUOTA_FILE = /etc/backupSize&lt;br /&gt;
PROJECTS_FILE = /etc/projects&lt;br /&gt;
PROJID_FILE = /etc/projid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Communication with LDAP =&lt;br /&gt;
The daemon &amp;quot;communicates&amp;quot; with the LDAP to let other processes know its current state. The important attributes therefore are &#039;&#039;&#039;sstProvisioningMode&#039;&#039;&#039; and &#039;&#039;&#039;sstProvisioningState&#039;&#039;&#039; in the given Backup-Account entry. The sequence is defined for adding, modifying or deleting an entry. The preconditions for all three modi are:&lt;br /&gt;
* sstProvisioningMode is set to add, modify or delete&lt;br /&gt;
* sstProvisioningState is set to 0&lt;br /&gt;
* sstProvisioningDate is set to 0 or the current date (format: YYYYMMDD)&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: add&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: adding&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: added&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modify&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modifying&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon has finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modified&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstIsActive: FALSE&lt;br /&gt;
sstProvisioningMode: delete&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: deleting&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: deleted&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Source Code =&lt;br /&gt;
The source code is located in our GitHub Repository:&lt;br /&gt;
&lt;br /&gt;
https://github.com/stepping-stone/prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
== Exit Codes ==&lt;br /&gt;
The following list defines the return codes and their meaning for the ...:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use constant&lt;br /&gt;
{&lt;br /&gt;
    SUCCESS                                 =&amp;gt; 0,&lt;br /&gt;
    UNDEFINED_ERROR                         =&amp;gt; 1,&lt;br /&gt;
    USER_NOT_PRESENT_IN_BACKEND             =&amp;gt; 2,&lt;br /&gt;
    PERL_VERSION_NOT_STATISFIED             =&amp;gt; 3,&lt;br /&gt;
    CANNOT_CHECK_HOME_DIR_PRESENCE          =&amp;gt; 4,&lt;br /&gt;
    CANNOT_CREATE_HOME_DIR                  =&amp;gt; 5,&lt;br /&gt;
    CANNOT_SET_QUOTA                        =&amp;gt; 6,&lt;br /&gt;
    CANNOT_CREATE_RSNAPSHOT_CONFIGURATION   =&amp;gt; 7,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
== Requirements ==&lt;br /&gt;
A working test server set up following the [[stoney_backup:_Server_set-up#prov-backup-rsnapshot | stoney backup: Server set-up]] guide.&lt;br /&gt;
&lt;br /&gt;
== Test the daemon ==&lt;br /&gt;
* The daemon is running on the Backup-Server VM&lt;br /&gt;
** Open a terminal and login to the Backup-Server VM&lt;br /&gt;
** &amp;lt;pre&amp;gt;tail -f /var/log/syslog/provisioning.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Open a second terminal and login to the Backup-Server VM&lt;br /&gt;
** Make sure the directory /root/data exists, if not create it&lt;br /&gt;
** Create an online backup account by executing the test script: &lt;br /&gt;
** &amp;lt;pre&amp;gt;/usr/libexec/createBackupDirectory.sh --uid 3724300&amp;lt;/pre&amp;gt;&lt;br /&gt;
** The test script currently supports the following options: &lt;br /&gt;
*** --uid &amp;lt;UID&amp;gt;: Mandatory option, the backup accounts uid&lt;br /&gt;
*** --reseller &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToResellerUID (default 4000000)&lt;br /&gt;
*** --customer &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToCustomerUID (default 4000001)&lt;br /&gt;
*** --people &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToPersonUID (default 4000002)&lt;br /&gt;
*** --givenname &amp;lt;Name&amp;gt;: Optional, sets the givenname attribute (default &amp;quot;Givenname&amp;quot;)&lt;br /&gt;
*** --surname &amp;lt;Name&amp;gt;: Optional, sets the sn attribute (defualt &amp;quot;Surname&amp;quot;)&lt;br /&gt;
** Load the generated LDIF (you find them under /root/data) step by step into the LDAP and observe what the deamon is doing in the first terminal: &lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/01_add_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/02_modify_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/03_delete_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/04_remove_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
[[Category:stoney backup]][[Category:Provisioning Modules]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_prov-backup-rsnapshot&amp;diff=3682</id>
		<title>stoney backup: prov-backup-rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_prov-backup-rsnapshot&amp;diff=3682"/>
		<updated>2014-06-19T08:02:05Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
This pages contains all necessary information one needs to know about the prov-backup-rsnapshot daemon.&lt;br /&gt;
@PAT: What&#039;s the purpose of the &#039;&#039;prov-backup-rsnapshot daemon&#039;&#039;? Please write a short introduction. --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 10:02, 19 June 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
(Note: Comments starting with /* are not in the configuration file, they are only in the wiki to add some additional information)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2013 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
/* If you want, you can override the log information from the global configuration file this might be useful for debugging */&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
/* Specify the hosts fully qualified domain name. This name will be used to perform some checks and also appear in the information and error mails */&lt;br /&gt;
ENVIRONMENT = &amp;lt;FQDN&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Database]&lt;br /&gt;
BACKEND = LDAP&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.org&lt;br /&gt;
PORT = 636&lt;br /&gt;
ADMIN_USER = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
SERVICE_SUBTREE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
COOKIE_FILE = /etc/Provisioning/Backup/rsnapshot.cookie&lt;br /&gt;
DEFAULT_COOKIE = rid=001,csn=&lt;br /&gt;
SEARCH_FILTER = (&amp;amp;(entryCSN&amp;gt;=%entryCSN%)(sstProvisioningState=0))&lt;br /&gt;
&lt;br /&gt;
/* Specifies the service itself. As it is the prov-backup-rsnapshot module, the SERVICE is &amp;quot;Backup&amp;quot; and the TYPE is &amp;quot;Rsnapshot&amp;quot;.&lt;br /&gt;
 * The MODUS is as usual selfcare and the TRANSPORTAPI is LocalCLI. This is because the daemon is running on the same host as the&lt;br /&gt;
 * backup accounts are provisioned and the commands can be executed on this host using the cli.&lt;br /&gt;
 * For more information about MODUS and TRANSPORTAPI see https://int.stepping-stone.ch/wiki/provisioning.pl#Service_Konfiguration&lt;br /&gt;
 */&lt;br /&gt;
[Service]&lt;br /&gt;
MODUS = selfcare&lt;br /&gt;
TRANSPORTAPI = LocalCLI&lt;br /&gt;
SERVICE = Backup&lt;br /&gt;
TYPE = Rsnapshot&lt;br /&gt;
&lt;br /&gt;
SYSLOG = prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
/* For the TRANSPORTAPI LocalCLI there is no gateway required because there is no connection to establish. So set HOST, USER and&lt;br /&gt;
 * DSA_FILE to whatever you want. Don&#039;t leave it blank, otherwise the provisioning daemon would log some error messages saying&lt;br /&gt;
 * these attributes are empty &lt;br /&gt;
 */&lt;br /&gt;
[Gateway]&lt;br /&gt;
HOST = localhost&lt;br /&gt;
USER = provisioning&lt;br /&gt;
DSA_FILE = none&lt;br /&gt;
&lt;br /&gt;
/* Information about the backup itself (how to setup everything). Note that the %uid% int the RSNAPSHOT_CONFIG_FILE parameter will&lt;br /&gt;
 * be replaced by the accounts UID. The script CREATE_CHROOT_CMD was installed with the prov-backup-rsnapshot module, so do not&lt;br /&gt;
 * change this parameter. The quota parameters (SET_QUOTA_CMD, MOUNTPOINT, QUOTA_FILE, PROJECTS_FILE and PROJID_FILE) represent &lt;br /&gt;
 * the quota setup as described on http://wiki.stoney-cloud.org/index.php/stoney_backup:_Server_set-up#Quota. If you followed this&lt;br /&gt;
 * manual, you can copy-paste them into your configuration file, otherwise adapt them according to your quota setup.&lt;br /&gt;
 */&lt;br /&gt;
[Backup]&lt;br /&gt;
RSNAPSHOT_CONFIG_FILE = /etc/rsnapshot/rsnapshot.conf.%uid%&lt;br /&gt;
SET_QUOTA_CMD = /usr/sbin/xfs_quota&lt;br /&gt;
CREATE_CHROOT_CMD = /usr/libexec/createBackupDirectory.sh&lt;br /&gt;
MOUNTPOINT = /var&lt;br /&gt;
QUOTA_FILE = /etc/backupSize&lt;br /&gt;
PROJECTS_FILE = /etc/projects&lt;br /&gt;
PROJID_FILE = /etc/projid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Communication with LDAP =&lt;br /&gt;
The daemon &amp;quot;communicates&amp;quot; with the LDAP to let other processes know its current state. The important attributes therefore are &#039;&#039;&#039;sstProvisioningMode&#039;&#039;&#039; and &#039;&#039;&#039;sstProvisioningState&#039;&#039;&#039; in the given Backup-Account entry. The sequence is defined for adding, modifying or deleting an entry. The preconditions for all three modi are:&lt;br /&gt;
* sstProvisioningMode is set to add, modify or delete&lt;br /&gt;
* sstProvisioningState is set to 0&lt;br /&gt;
* sstProvisioningDate is set to 0 or the current date (format: YYYYMMDD)&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: add&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: adding&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: added&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modify&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modifying&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon has finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: modified&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete ==&lt;br /&gt;
=== Precondition === &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstIsActive: FALSE&lt;br /&gt;
sstProvisioningMode: delete&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: deleting&lt;br /&gt;
sstProvisioningState: 0&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Now the prov-backup-rsnapshot daemon works on the given entry. &lt;br /&gt;
=== Step 2 ===&lt;br /&gt;
As soon as the prov-backup-rsnapshot daemon finished working on the given entry:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ldif&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
sstProvisioningMode: deleted&lt;br /&gt;
sstProvisioningState: YYYYMMDDThhmmssZ&lt;br /&gt;
sstProvisioningDate: 0&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Source Code =&lt;br /&gt;
The source code is located in our GitHub Repository:&lt;br /&gt;
&lt;br /&gt;
https://github.com/stepping-stone/prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
== Exit Codes ==&lt;br /&gt;
The following list defines the return codes and their meaning for the ...:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use constant&lt;br /&gt;
{&lt;br /&gt;
    SUCCESS                                 =&amp;gt; 0,&lt;br /&gt;
    UNDEFINED_ERROR                         =&amp;gt; 1,&lt;br /&gt;
    USER_NOT_PRESENT_IN_BACKEND             =&amp;gt; 2,&lt;br /&gt;
    PERL_VERSION_NOT_STATISFIED             =&amp;gt; 3,&lt;br /&gt;
    CANNOT_CHECK_HOME_DIR_PRESENCE          =&amp;gt; 4,&lt;br /&gt;
    CANNOT_CREATE_HOME_DIR                  =&amp;gt; 5,&lt;br /&gt;
    CANNOT_SET_QUOTA                        =&amp;gt; 6,&lt;br /&gt;
    CANNOT_CREATE_RSNAPSHOT_CONFIGURATION   =&amp;gt; 7,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
== Requirements ==&lt;br /&gt;
A working test server set up following the [[stoney_backup:_Server_set-up#prov-backup-rsnapshot | stoney backup: Server set-up]] guide.&lt;br /&gt;
&lt;br /&gt;
== Test the daemon ==&lt;br /&gt;
* The daemon is running on the Backup-Server VM (kvm-0036)&lt;br /&gt;
** Open a terminal and login to the Backup-Server VM&lt;br /&gt;
** &amp;lt;pre&amp;gt;tail -f /var/log/syslog/provisioning.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Open a second terminal and login to the Backup-Server VM&lt;br /&gt;
** Make sure the directory /root/data exists, if not create it&lt;br /&gt;
** Create an online backup account by executing the test script: &lt;br /&gt;
** &amp;lt;pre&amp;gt;/usr/libexec/createBackupDirectory.sh --uid 3724300&amp;lt;/pre&amp;gt;&lt;br /&gt;
** The test script currently supports the following options: &lt;br /&gt;
*** --uid &amp;lt;UID&amp;gt;: Mandatory option, the backup accounts uid&lt;br /&gt;
*** --reseller &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToResellerUID (default 4000000)&lt;br /&gt;
*** --customer &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToCustomerUID (default 4000001)&lt;br /&gt;
*** --people &amp;lt;UID&amp;gt;: Optional, sets sstBelongsToPersonUID (default 4000002)&lt;br /&gt;
*** --givenname &amp;lt;Name&amp;gt;: Optional, sets the givenname attribute (default &amp;quot;Givenname&amp;quot;)&lt;br /&gt;
*** --surname &amp;lt;Name&amp;gt;: Optional, sets the sn attribute (defualt &amp;quot;Surname&amp;quot;)&lt;br /&gt;
** Load the generated LDIF (you find them under /root/data) step by step into the LDAP and observe what the deamon is doing in the first terminal: &lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/01_add_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/02_modify_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/03_delete_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &amp;lt;pre&amp;gt;/root/loadOpenLDAPsingleLDIF.sh /root/data/04_remove_3724300.ldif&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
[[Category:stoney backup]][[Category:Provisioning Modules]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_Server_set-up&amp;diff=3681</id>
		<title>stoney backup: Server set-up</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_backup:_Server_set-up&amp;diff=3681"/>
		<updated>2014-06-19T07:58:12Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Provisioning global configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Abstract =&lt;br /&gt;
This document describes server setup for the stoney cloud (Online) Backup service, built upon the [http://www.gentoo.org/ Gentoo] Linux distribution.&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
After working through this documentation, you will be able to set up and configure your own (Online) Backup service server.&lt;br /&gt;
&lt;br /&gt;
= Software Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
A working stoney cloud, installed according to [[stoney cloud: Single-Node Installation]] or [[stoney cloud: Multi-Node Installation]].&lt;br /&gt;
&lt;br /&gt;
== Keywords &amp;amp; USE-Flags ==&lt;br /&gt;
For a minimal OpenLDAP directory installation:&lt;br /&gt;
 echo &amp;quot;net-nds/openldap minimal sasl&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
 echo &amp;quot;net-nds/openldap ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&lt;br /&gt;
NSS and PAM modules for lookups using LDAP:&lt;br /&gt;
 echo &amp;quot;sys-auth/nss-pam-ldapd sasl&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
 echo &amp;quot;sys-auth/nss-pam-ldapd ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
 echo &amp;quot;sys-fs/quota ldap&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;=app-admin/jailkit-2.16 ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&lt;br /&gt;
For the prov-backup-rsnapshot daemon:&lt;br /&gt;
 echo &amp;quot;dev-perl/Net-SMTPS ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
 echo &amp;quot;perl-core/Switch ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&lt;br /&gt;
To build puttygen only without X11:&lt;br /&gt;
 echo &amp;quot;net-misc/putty ~amd64&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
 echo &amp;quot;net-misc/putty -gtk&amp;quot; &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
&lt;br /&gt;
== Emerge ==&lt;br /&gt;
 emerge -va nss-pam-ldapd \&lt;br /&gt;
            quota \&lt;br /&gt;
            net-misc/putty \&lt;br /&gt;
            app-admin/jailkit \&lt;br /&gt;
            sys-apps/haveged \&lt;br /&gt;
            net-misc/putty \&lt;br /&gt;
            sys-apps/sst-backup-utils \&lt;br /&gt;
            sys-apps/sst-prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
To list the dependencies of ebuilds, you can use &amp;lt;code&amp;gt;equery&amp;lt;/code&amp;gt;:&lt;br /&gt;
 equery depgraph sst-backup-utils&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 * Searching for sst-backup-utils ...&lt;br /&gt;
&lt;br /&gt;
 * dependency graph for sys-apps/sst-backup-utils-0.1.0&lt;br /&gt;
 `--  sys-apps/sst-backup-utils-0.1.0  amd64 &lt;br /&gt;
   `--  dev-perl/PerlUtil-0.1.0  (&amp;gt;=dev-perl/PerlUtil-0.1.0) amd64 &lt;br /&gt;
   `--  virtual/perl-Sys-Syslog-0.320.0  (virtual/perl-Sys-Syslog) amd64 &lt;br /&gt;
   `--  dev-perl/perl-ldap-0.530.0  (dev-perl/perl-ldap) amd64 &lt;br /&gt;
   `--  dev-perl/XML-Simple-2.200.0  (dev-perl/XML-Simple) amd64 &lt;br /&gt;
   `--  dev-perl/Config-IniFiles-2.780.0  (dev-perl/Config-IniFiles) amd64 &lt;br /&gt;
   `--  dev-perl/XML-Validator-Schema-1.100.0  (dev-perl/XML-Validator-Schema) amd64 &lt;br /&gt;
   `--  dev-perl/Date-Calc-6.300.0  (dev-perl/Date-Calc) amd64 &lt;br /&gt;
   `--  dev-perl/DateManip-6.310.0  (dev-perl/DateManip) amd64 &lt;br /&gt;
   `--  dev-perl/Schedule-Cron-Events-1.930.0  (dev-perl/Schedule-Cron-Events) amd64 &lt;br /&gt;
   `--  dev-perl/DateTime-Format-Strptime-1.520.0  (dev-perl/DateTime-Format-Strptime) amd64 &lt;br /&gt;
   `--  dev-perl/XML-SAX-0.990.0  (dev-perl/XML-SAX) amd64 &lt;br /&gt;
   `--  virtual/perl-MIME-Base64-3.130.0-r2  (virtual/perl-MIME-Base64) amd64 &lt;br /&gt;
   `--  dev-perl/Authen-SASL-2.160.0  (dev-perl/Authen-SASL) amd64 &lt;br /&gt;
   `--  dev-perl/Net-SMTPS-0.30.0  (dev-perl/Net-SMTPS) ~amd64 &lt;br /&gt;
   `--  dev-perl/text-template-1.450.0  (dev-perl/text-template) amd64 &lt;br /&gt;
   `--  virtual/perl-Getopt-Long-2.380.0-r2  (virtual/perl-Getopt-Long) amd64 &lt;br /&gt;
   `--  dev-perl/Parallel-ForkManager-1.20.0  (dev-perl/Parallel-ForkManager) amd64 &lt;br /&gt;
   `--  dev-perl/Time-Stopwatch-1.0.0  (dev-perl/Time-Stopwatch) amd64 &lt;br /&gt;
   `--  app-backup/rsnapshot-1.3.1-r1  (app-backup/rsnapshot) amd64 &lt;br /&gt;
[ sys-apps/sst-backup-utils-0.1.0 stats: packages (20), max depth (1) ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information, visit the [http://www.gentoo.org/doc/en/gentoolkit.xml Gentoolkit] page.&lt;br /&gt;
&lt;br /&gt;
= Base Server Software Configuration =&lt;br /&gt;
== OpenSSH ==&lt;br /&gt;
=== OpenSSH Configuration ===&lt;br /&gt;
Configure the OpenSSH daemon:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vi /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set following options:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
PasswordAuthentication yes&lt;br /&gt;
UsePAM yes&lt;br /&gt;
Subsystem     sftp   internal-sftp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure, that &amp;lt;code&amp;gt;Subsystem     sftp   internal-sftp&amp;lt;/code&amp;gt; is the last line in the configuration file.&lt;br /&gt;
&lt;br /&gt;
We want to reduce the numbers of chroot environments in one folder. As the &amp;lt;code&amp;gt;ChrootDirectory&amp;lt;/code&amp;gt; configuration option only allows &amp;lt;code&amp;gt;%h&amp;lt;/code&amp;gt; (home directory of the user) and &amp;lt;code&amp;gt;%u&amp;lt;/code&amp;gt; (username of the user), we need to create the necessary matching rules in the form of:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Match User *000&lt;br /&gt;
  ChrootDirectory /var/backup/000/%u&lt;br /&gt;
  AuthorizedKeysFile /var/backup/000/%u/%h/.ssh/authorized_keys&lt;br /&gt;
Match&lt;br /&gt;
Match User *001&lt;br /&gt;
  ChrootDirectory /var/backup/001/%u&lt;br /&gt;
  AuthorizedKeysFile /var/backup/001/%u/%h/.ssh/authorized_keys&lt;br /&gt;
Match&lt;br /&gt;
...&lt;br /&gt;
Match User *999&lt;br /&gt;
  ChrootDirectory /var/backup/999/%u&lt;br /&gt;
  AuthorizedKeysFile /var/backup/999/%u/%h/.ssh/authorized_keys&lt;br /&gt;
Match&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The creation of the matching rules is done by executing the following bash commands:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
FILE=/etc/ssh/sshd_config;&lt;br /&gt;
&lt;br /&gt;
for x in {0..999} ; do \&lt;br /&gt;
  printf &amp;quot;Match User *%03d\n&amp;quot; $x &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
  printf &amp;quot;  ChrootDirectory /var/backup/%03d/%%u\n&amp;quot; $x &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
  printf &amp;quot;  AuthorizedKeysFile /var/backup/%03d/%%u/%%h/.ssh/authorized_keys\n&amp;quot; $x &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
  printf &amp;quot;Match\n&amp;quot; &amp;gt;&amp;gt; ${FILE}; \&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to restart the OpenSSH daemon:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/sshd restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH Host Keys ===&lt;br /&gt;
If you migrate from a existing backup server, you might want to copy the ssh host keys to the new server. If you do so clients want see a difference between the two hosts as the fingerprint remains the same. Copy the following files from the existing host to the new:&lt;br /&gt;
* /etc/ssh/ssh_host_dsa_key&lt;br /&gt;
* /etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
* /etc/ssh/ssh_host_key&lt;br /&gt;
* /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
* /etc/ssh/ssh_host_dsa_key.pub&lt;br /&gt;
* /etc/ssh/ssh_host_ecdsa_key.pub&lt;br /&gt;
* /etc/ssh/ssh_host_key.pub&lt;br /&gt;
* /etc/ssh/ssh_host_rsa_key.pub&lt;br /&gt;
&lt;br /&gt;
Set the correct permissions on the new host:&lt;br /&gt;
 chmod 600 /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_key /etc/ssh/ssh_host_rsa_key&lt;br /&gt;
 chmod 644 /etc/ssh/*.pub&lt;br /&gt;
&lt;br /&gt;
And restart the ssh daemon. &#039;&#039;Caution&#039;&#039;: do not close your existing ssh session as long as you are not sure the ssh daemon has restarted properly and you can login again.&lt;br /&gt;
 /etc/init.d/sshd restart&lt;br /&gt;
&lt;br /&gt;
== OpenLDAP ==&lt;br /&gt;
=== /etc/hosts ===&lt;br /&gt;
Update the &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; with the LDAP server:&lt;br /&gt;
 /etc/hosts&lt;br /&gt;
&lt;br /&gt;
 # VIP of the LDAP Server&lt;br /&gt;
 31.216.40.4      ldapm.stoney-cloud.org&lt;br /&gt;
&lt;br /&gt;
=== Root CA Certificate Installation ===&lt;br /&gt;
Install the root CA certificate into the OpenSSL default certificate storage directory:&lt;br /&gt;
 fqdn=&amp;quot;cloud.stoney-cloud.org&amp;quot;    # The fully qualified domain name of the server containing the root certificate.&lt;br /&gt;
 &lt;br /&gt;
 cd /etc/ssl/certs/&lt;br /&gt;
 wget --no-check-certificate https://${fqdn}/ca/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
 chown root:root /etc/ssl/certs/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
 chmod 444 /etc/ssl/certs/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
&lt;br /&gt;
Rebuild the CA hashes&lt;br /&gt;
 c_rehash /etc/ssl/certs/&lt;br /&gt;
&lt;br /&gt;
=== /etc/openldap/ldap.conf ===&lt;br /&gt;
Update the &amp;lt;code&amp;gt;/etc/openldap/ldap.conf&amp;lt;/code&amp;gt;LDAP configuration file/environment variables:&lt;br /&gt;
 /etc/openldap/ldap.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Used to specify a size limit to use when performing searches. The number should be an&lt;br /&gt;
# non-negative integer. SIZELIMIT of zero (0) specifies unlimited search size.&lt;br /&gt;
SIZELIMIT       20000&lt;br /&gt;
&lt;br /&gt;
# Used to specify a time limit to use when performing searches. The number should be an&lt;br /&gt;
# non-negative integer. TIMELIMIT of zero (0) specifies unlimited search time to be used.&lt;br /&gt;
TIMELIMIT       45&lt;br /&gt;
&lt;br /&gt;
# Specify how aliases dereferencing is done. DEREF should be set to one of never, always, search,&lt;br /&gt;
# or find to specify that aliases are never dereferenced, always dereferenced, dereferenced when&lt;br /&gt;
# searching, or dereferenced only when locating the base object for the search. The default is to&lt;br /&gt;
# never dereference aliases.&lt;br /&gt;
DEREF           never&lt;br /&gt;
&lt;br /&gt;
# Specifies the URI(s) of an LDAP server(s) to which the LDAP library should connect. The URI&lt;br /&gt;
# scheme may be either ldapor ldaps which refer to LDAP over TCP and LDAP over SSL (TLS)&lt;br /&gt;
# respectively. Each server&#039;s name can be specified as a domain- style name or an IP address&lt;br /&gt;
# literal. Optionally, the server&#039;s name can followed by a &#039;:&#039; and the port number the LDAP&lt;br /&gt;
# server is listening on. If no port number is provided, the default port for the scheme is&lt;br /&gt;
# used (389 for ldap://, 636 for ldaps://). A space separated list of URIs may be provided.&lt;br /&gt;
URI             ldaps://ldapm.stoney-cloud.org&lt;br /&gt;
&lt;br /&gt;
# Used to specify the default base DN to use when performing ldap operations. The base must be&lt;br /&gt;
# specified as a Distinguished Name in LDAP format.&lt;br /&gt;
BASE            dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
# This is a local copy of the certificate of the certificate authority&lt;br /&gt;
# used to sign the server certificate for the LDAP server I am using&lt;br /&gt;
TLS_CACERT      /etc/ssl/certs/FOSS-Cloud_CA.cert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check you configuration by doing a search:&lt;br /&gt;
 ldapsearch -v -H &amp;quot;ldaps://ldapm.stoney-cloud.org&amp;quot; \&lt;br /&gt;
               -b &amp;quot;dc=stoney-cloud,dc=org&amp;quot; \&lt;br /&gt;
               -D &amp;quot;cn=Manager,dc=stoney-cloud,dc=org&amp;quot; \&lt;br /&gt;
               -s one &amp;quot;(objectClass=*)&amp;quot; \&lt;br /&gt;
               -LLL -W&lt;br /&gt;
&lt;br /&gt;
The result should look something like:&lt;br /&gt;
 ldap_initialize( ldaps://ldapm.stoney-cloud.org:636/??base )&lt;br /&gt;
 filter: (objectClass=*)&lt;br /&gt;
 requesting: All userApplication attributes&lt;br /&gt;
 dn: ou=administration,dc=stoney-cloud,dc=org&lt;br /&gt;
 objectClass: top&lt;br /&gt;
 objectClass: organizationalUnit&lt;br /&gt;
 ou: administration&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== Random Number Generator (haveged) ==&lt;br /&gt;
Tools like putty are dependent on random numbers to be able to create certificates.&lt;br /&gt;
&lt;br /&gt;
=== haveged - Generate random numbers and feed linux random device ===&lt;br /&gt;
The haveged daemon doesn&#039;t need any special configuration, therefore you can start it from the command line interface:&lt;br /&gt;
 /etc/init.d/haveged start&lt;br /&gt;
&lt;br /&gt;
Check, if the start was successful:&lt;br /&gt;
 ps auxf | grep haveged&lt;br /&gt;
&lt;br /&gt;
 root     18001  1.0  0.0   7420  3616 ?        Ss   08:48   0:00 /usr/sbin/haveged -r 0 -w 1024 -v 1&lt;br /&gt;
&lt;br /&gt;
Add the haveged daemon to the default run level:&lt;br /&gt;
 rc-update add haveged default&lt;br /&gt;
&lt;br /&gt;
== nss-pam-ldapd ==&lt;br /&gt;
=== nslcd.conf — configuration file for LDAP nameservice daemon ===&lt;br /&gt;
 /etc/nslcd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the configuration file for the LDAP nameservice&lt;br /&gt;
# switch library&#039;s nslcd daemon. It configures the mapping&lt;br /&gt;
# between NSS names (see /etc/nsswitch.conf) and LDAP&lt;br /&gt;
# information in the directory.&lt;br /&gt;
# See the manual page nslcd.conf(5) for more information.&lt;br /&gt;
&lt;br /&gt;
# The user and group nslcd should run as.&lt;br /&gt;
uid nslcd&lt;br /&gt;
gid nslcd&lt;br /&gt;
&lt;br /&gt;
# The uri pointing to the LDAP server to use for name lookups.&lt;br /&gt;
# Multiple entries may be specified. The address that is used&lt;br /&gt;
# here should be resolvable without using LDAP (obviously).&lt;br /&gt;
#uri ldap://127.0.0.1/&lt;br /&gt;
#uri ldaps://127.0.0.1/&lt;br /&gt;
#uri ldapi://%2fvar%2frun%2fldapi_sock/&lt;br /&gt;
# Note: %2f encodes the &#039;/&#039; used as directory separator&lt;br /&gt;
uri ldaps://ldapm.tombstone.ch&lt;br /&gt;
&lt;br /&gt;
# The LDAP version to use (defaults to 3&lt;br /&gt;
# if supported by client library)&lt;br /&gt;
#ldap_version 3&lt;br /&gt;
&lt;br /&gt;
# The distinguished name of the search base.&lt;br /&gt;
base dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
# The distinguished name to bind to the server with.&lt;br /&gt;
# Optional: default is to bind anonymously.&lt;br /&gt;
binddn cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
# The credentials to bind with.&lt;br /&gt;
# Optional: default is no credentials.&lt;br /&gt;
# Note that if you set a bindpw you should check the permissions of this file.&lt;br /&gt;
bindpw myverysecretpassword&lt;br /&gt;
&lt;br /&gt;
# The distinguished name to perform password modifications by root by.&lt;br /&gt;
#rootpwmoddn cn=admin,dc=example,dc=com&lt;br /&gt;
&lt;br /&gt;
# The default search scope.&lt;br /&gt;
#scope sub&lt;br /&gt;
#scope one&lt;br /&gt;
#scope base&lt;br /&gt;
&lt;br /&gt;
# Customize certain database lookups.&lt;br /&gt;
#base   group  ou=Groups,dc=example,dc=com&lt;br /&gt;
base   group  ou=groups,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
base   passwd ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
base   shadow ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
#scope  group  onelevel&lt;br /&gt;
#scope  hosts  sub&lt;br /&gt;
&lt;br /&gt;
#filter group  (&amp;amp;(objectClass=posixGroup)(sstIsActive=TRUE))&lt;br /&gt;
filter passwd (&amp;amp;(objectClass=posixAccount)(sstIsActive=TRUE))&lt;br /&gt;
filter shadow (&amp;amp;(objectClass=shadowAccount)(sstIsActive=TRUE))&lt;br /&gt;
&lt;br /&gt;
# Bind/connect timelimit.&lt;br /&gt;
#bind_timelimit 30&lt;br /&gt;
&lt;br /&gt;
# Search timelimit.&lt;br /&gt;
#timelimit 30&lt;br /&gt;
&lt;br /&gt;
# Idle timelimit. nslcd will close connections if the&lt;br /&gt;
# server has not been contacted for the number of seconds.&lt;br /&gt;
#idle_timelimit 3600&lt;br /&gt;
&lt;br /&gt;
# Use StartTLS without verifying the server certificate.&lt;br /&gt;
#ssl start_tls&lt;br /&gt;
tls_reqcert never&lt;br /&gt;
&lt;br /&gt;
# CA certificates for server certificate verification&lt;br /&gt;
#tls_cacertdir /etc/ssl/certs&lt;br /&gt;
#tls_cacertfile /etc/ssl/ca.cert&lt;br /&gt;
&lt;br /&gt;
# Seed the PRNG if /dev/urandom is not provided&lt;br /&gt;
#tls_randfile /var/run/egd-pool&lt;br /&gt;
&lt;br /&gt;
# SSL cipher suite&lt;br /&gt;
# See man ciphers for syntax&lt;br /&gt;
#tls_ciphers TLSv1&lt;br /&gt;
&lt;br /&gt;
# Client certificate and key&lt;br /&gt;
# Use these, if your server requires client authentication.&lt;br /&gt;
#tls_cert&lt;br /&gt;
#tls_key&lt;br /&gt;
&lt;br /&gt;
# Mappings for Services for UNIX 3.5&lt;br /&gt;
#filter passwd (objectClass=User)&lt;br /&gt;
#map    passwd uid              msSFU30Name&lt;br /&gt;
#map    passwd userPassword     msSFU30Password&lt;br /&gt;
#map    passwd homeDirectory    msSFU30HomeDirectory&lt;br /&gt;
#map    passwd homeDirectory    msSFUHomeDirectory&lt;br /&gt;
#filter shadow (objectClass=User)&lt;br /&gt;
#map    shadow uid              msSFU30Name&lt;br /&gt;
#map    shadow userPassword     msSFU30Password&lt;br /&gt;
#filter group  (objectClass=Group)&lt;br /&gt;
#map    group  member           msSFU30PosixMember&lt;br /&gt;
&lt;br /&gt;
# Mappings for Services for UNIX 2.0&lt;br /&gt;
#filter passwd (objectClass=User)&lt;br /&gt;
#map    passwd uid              msSFUName&lt;br /&gt;
#map    passwd userPassword     msSFUPassword&lt;br /&gt;
#map    passwd homeDirectory    msSFUHomeDirectory&lt;br /&gt;
#map    passwd gecos            msSFUName&lt;br /&gt;
#filter shadow (objectClass=User)&lt;br /&gt;
#map    shadow uid              msSFUName&lt;br /&gt;
#map    shadow userPassword     msSFUPassword&lt;br /&gt;
#map    shadow shadowLastChange pwdLastSet&lt;br /&gt;
#filter group  (objectClass=Group)&lt;br /&gt;
#map    group  member           posixMember&lt;br /&gt;
&lt;br /&gt;
# Mappings for Active Directory&lt;br /&gt;
#pagesize 1000&lt;br /&gt;
#referrals off&lt;br /&gt;
#idle_timelimit 800&lt;br /&gt;
#filter passwd (&amp;amp;(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))&lt;br /&gt;
#map    passwd uid              sAMAccountName&lt;br /&gt;
#map    passwd homeDirectory    unixHomeDirectory&lt;br /&gt;
#map    passwd gecos            displayName&lt;br /&gt;
#filter shadow (&amp;amp;(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))&lt;br /&gt;
#map    shadow uid              sAMAccountName&lt;br /&gt;
#map    shadow shadowLastChange pwdLastSet&lt;br /&gt;
#filter group  (objectClass=group)&lt;br /&gt;
&lt;br /&gt;
# Alternative mappings for Active Directory&lt;br /&gt;
# (replace the SIDs in the objectSid mappings with the value for your domain)&lt;br /&gt;
#pagesize 1000&lt;br /&gt;
#referrals off&lt;br /&gt;
#idle_timelimit 800&lt;br /&gt;
#filter passwd (&amp;amp;(objectClass=user)(objectClass=person)(!(objectClass=computer)))&lt;br /&gt;
#map    passwd uid           cn&lt;br /&gt;
#map    passwd uidNumber     objectSid:S-1-5-21-3623811015-3361044348-30300820&lt;br /&gt;
#map    passwd gidNumber     objectSid:S-1-5-21-3623811015-3361044348-30300820&lt;br /&gt;
#map    passwd homeDirectory &amp;quot;/home/$cn&amp;quot;&lt;br /&gt;
#map    passwd gecos         displayName&lt;br /&gt;
#map    passwd loginShell    &amp;quot;/bin/bash&amp;quot;&lt;br /&gt;
#filter group (|(objectClass=group)(objectClass=person))&lt;br /&gt;
#map    group gidNumber      objectSid:S-1-5-21-3623811015-3361044348-30300820&lt;br /&gt;
&lt;br /&gt;
# Mappings for AIX SecureWay&lt;br /&gt;
#filter passwd (objectClass=aixAccount)&lt;br /&gt;
#map    passwd uid              userName&lt;br /&gt;
#map    passwd userPassword     passwordChar&lt;br /&gt;
#map    passwd uidNumber        uid&lt;br /&gt;
#map    passwd gidNumber        gid&lt;br /&gt;
#filter group  (objectClass=aixAccessGroup)&lt;br /&gt;
#map    group  cn               groupName&lt;br /&gt;
#map    group  gidNumber        gid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== nsswitch.conf - Name Service Switch configuration file ===&lt;br /&gt;
 /etc/nsswitch.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:      files ldap&lt;br /&gt;
shadow:      files ldap&lt;br /&gt;
group:       files ldap&lt;br /&gt;
&lt;br /&gt;
# passwd:    db files nis&lt;br /&gt;
# shadow:    db files nis&lt;br /&gt;
# group:     db files nis&lt;br /&gt;
&lt;br /&gt;
hosts:       files dns&lt;br /&gt;
networks:    files dns&lt;br /&gt;
&lt;br /&gt;
services:    db files&lt;br /&gt;
protocols:   db files&lt;br /&gt;
rpc:         db files&lt;br /&gt;
ethers:      db files&lt;br /&gt;
netmasks:    files&lt;br /&gt;
netgroup:    files&lt;br /&gt;
bootparams:  files&lt;br /&gt;
&lt;br /&gt;
automount:   files&lt;br /&gt;
aliases:     files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== system-auth ===&lt;br /&gt;
 vi /etc/pam.d/system-auth&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth            required        pam_env.so&lt;br /&gt;
auth            sufficient      pam_unix.so try_first_pass likeauth nullok&lt;br /&gt;
auth            sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
auth            required        pam_deny.so&lt;br /&gt;
&lt;br /&gt;
account         required        pam_unix.so&lt;br /&gt;
account         sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
&lt;br /&gt;
password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3&lt;br /&gt;
password        required        pam_unix.so try_first_pass use_authtok nullok sha512 shadow&lt;br /&gt;
password        sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
password        required        pam_deny.so&lt;br /&gt;
&lt;br /&gt;
session         required        pam_limits.so&lt;br /&gt;
session         required        pam_env.so&lt;br /&gt;
session         required        pam_unix.so&lt;br /&gt;
session         sufficient      pam_ldap.so minimum_uid=1000 use_first_pass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test the Setup ===&lt;br /&gt;
 nslcd -d&lt;br /&gt;
&lt;br /&gt;
=== Update the Default Run Levels ===&lt;br /&gt;
 rc-update add nslcd default&lt;br /&gt;
 rc-update add nscd default&lt;br /&gt;
&lt;br /&gt;
=== Start the necessary Daemons ===&lt;br /&gt;
 /etc/init.d/nslcd start&lt;br /&gt;
 /etc/init.d/nscd start&lt;br /&gt;
&lt;br /&gt;
== Quota ==&lt;br /&gt;
=== 32-bit Project Identifier Support ===&lt;br /&gt;
We need to enable 32-bit project identifier support (PROJID32BIT feature) for our naming scheme (uid numbers larger than 65&#039;536), which is already the default on the stepping stone virtual machines:&lt;br /&gt;
 mkfs.xfs &#039;&#039;&#039;-i projid32bit=1&#039;&#039;&#039; /dev/vg-local-01/var&lt;br /&gt;
&lt;br /&gt;
=== Update /etc/fstab and Mount ===&lt;br /&gt;
Make sure, that you have user quota (uqota) and project quota (pquota) set as options on the chosen mount point in /etc/fstab. For example:&lt;br /&gt;
 LABEL=LV-VAR            /var            xfs             noatime,discard,inode64,uquota,pquota  0 2&lt;br /&gt;
&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
Check, if everything went ok:&lt;br /&gt;
 df -h | grep var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var  1023G  220G  804G  22% /var&lt;br /&gt;
&lt;br /&gt;
=== Verify ===&lt;br /&gt;
Some important options for xfs_quota:&lt;br /&gt;
* -x: Enable expert mode.&lt;br /&gt;
* -c: Pass arguments on the command line. Multiple arguments may be given.&lt;br /&gt;
&lt;br /&gt;
Remount the file system /var and check, if /var has the desired values:&lt;br /&gt;
 xfs_quota -x -c state /var&lt;br /&gt;
&lt;br /&gt;
As you can see (items marked bold), we have achieved our goal:&lt;br /&gt;
 User quota state on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
   Accounting: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Enforcement: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Inode: #131 (1 blocks, 1 extents)&lt;br /&gt;
 Group quota state on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
   Accounting: OFF&lt;br /&gt;
   Enforcement: OFF&lt;br /&gt;
   Inode: #132 (1 blocks, 1 extents)&lt;br /&gt;
 Project quota state on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
   Accounting: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Enforcement: &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
   Inode: #132 (1 blocks, 1 extents)&lt;br /&gt;
 Blocks grace time: [7 days 00:00:30]&lt;br /&gt;
 Inodes grace time: [7 days 00:00:30]&lt;br /&gt;
 Realtime Blocks grace time: [7 days 00:00:30]&lt;br /&gt;
&lt;br /&gt;
=== User Quotas ===&lt;br /&gt;
==== Adding a User Quota ====&lt;br /&gt;
Set a quota of 1 Gigabyte for the user 4000187 (the values are in kilobytes, so 1048576 kilobyte are 1024 megabytes which corresponds to 1 gigabyte):&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Or in bytes:&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=1073741824 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Read the quota information for the user 4000187:&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -u 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var                     0          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
If the user has data in the project, that belongs to him, the result will change:&lt;br /&gt;
 /dev/mapper/vg--local--01-var                512000          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
==== Modifiying a User Quota ====&lt;br /&gt;
To modify a users quota, you just set a new quota (limit):&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Read the quota information for the user 4000187:&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -u 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var                     0          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
If the user has data in the project, that belongs to him, the result will change:&lt;br /&gt;
 /dev/mapper/vg--local--01-var                512000          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
==== Removing a User Quota ====&lt;br /&gt;
Removing a quota for a user:&lt;br /&gt;
 xfs_quota -x -c &#039;limit bhard=0 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
The following command should give you an empty result:&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -u 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
=== Project (Directory) Quotas ===&lt;br /&gt;
==== Adding a Project (Directory) Quota ====&lt;br /&gt;
The XFS file system additionally allows you to set quotas on individual directory hierarchies in the file system that are known as managed trees. Each managed tree is uniquely identified by a project ID and an optional project name. We&#039;ll use the following values in the examples:&lt;br /&gt;
* project_ID: The uid of the online backup account (4000187).&lt;br /&gt;
* project_name: The uid of the online backup account (4000187). This could be a human readable name.&lt;br /&gt;
* mountpoint: The mountpoint of the xfs-filesystem (/var). See the &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt; entry from above.&lt;br /&gt;
* directory: The directory of the project (187/4000187), starting from the mountpoint of the xfs-filesystem (/var).&lt;br /&gt;
&lt;br /&gt;
Define a unique project ID for the directory hierarchy in the &amp;lt;code&amp;gt;/etc/projects&amp;lt;/code&amp;gt; file (project_ID:mountpoint/directory):&lt;br /&gt;
 echo &amp;quot;4000187:/var/backup/187/4000187/home/4000187&amp;quot; &amp;gt;&amp;gt; /etc/projects&lt;br /&gt;
&lt;br /&gt;
Create an entry in the &amp;lt;code&amp;gt;/etc/projid&amp;lt;/code&amp;gt; file that maps a project name to the project ID (project_name:project_ID):&lt;br /&gt;
 echo &amp;quot;4000187:4000187&amp;quot; &amp;gt;&amp;gt; /etc/projid&lt;br /&gt;
&lt;br /&gt;
Set Project:&lt;br /&gt;
 xfs_quota -x -c &#039;project -s -p /var/backup/187/4000187/home/4000187 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Set Quota (limit) on Project:&lt;br /&gt;
 xfs_quota -x -c &#039;limit -p bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Check your Quota (limit)&lt;br /&gt;
 xfs_quota -x -c &#039;quota -p 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Check the Quota:&lt;br /&gt;
* &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;: increase verbosity in reporting (also dumps zero values).&lt;br /&gt;
* &amp;lt;code&amp;gt;-N&amp;lt;/code&amp;gt;: suppress the initial header.&lt;br /&gt;
* &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;: display project quota information.&lt;br /&gt;
* &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt;: human readable format.&lt;br /&gt;
 xfs_quota -x -c &#039;quota -v -N -p 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
 /dev/mapper/vg--local--01-var                     0          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
If you copied data into the project, the output will look something like:&lt;br /&gt;
 /dev/mapper/vg--local--01-var                512000          0    1048576   00 [--------] /var&lt;br /&gt;
&lt;br /&gt;
To give you an overall view of the whole system:&lt;br /&gt;
 xfs_quota -x -c report /var&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User quota on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
                               Blocks                     &lt;br /&gt;
User ID          Used       Soft       Hard    Warn/Grace     &lt;br /&gt;
---------- -------------------------------------------------- &lt;br /&gt;
root          1024000          0          0     00 [--------]&lt;br /&gt;
4000187             0          0    1048576     00 [--------]&lt;br /&gt;
&lt;br /&gt;
Project quota on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
                               Blocks                     &lt;br /&gt;
Project ID       Used       Soft       Hard    Warn/Grace     &lt;br /&gt;
---------- -------------------------------------------------- &lt;br /&gt;
4000187        512000          0    1048576     00 [--------]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modifying a Project (Directory) Quota ====&lt;br /&gt;
To modify a project (directory) quota, you just set an new quota (limit) on the chosen project:&lt;br /&gt;
 xfs_quota -x -c &#039;limit -p bhard=1048576k 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Check your quota (limit)&lt;br /&gt;
 xfs_quota -x -c &#039;quota -p 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
==== Removing a Project (Directory) Quota ====&lt;br /&gt;
Removing a quota from a project:&lt;br /&gt;
 xfs_quota -x -c &#039;limit -p bhard=0 4000187&#039; /var&lt;br /&gt;
&lt;br /&gt;
Chreck the results:&lt;br /&gt;
 xfs_quota -x -c report /var&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User quota on /var (/dev/mapper/vg--local--01-var)&lt;br /&gt;
                               Blocks                     &lt;br /&gt;
User ID          Used       Soft       Hard    Warn/Grace     &lt;br /&gt;
---------- -------------------------------------------------- &lt;br /&gt;
root           512000          0          0     00 [--------]&lt;br /&gt;
4000187             0          0       1024     00 [--------]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the line with the Project ID 4000187 has disappeared:&lt;br /&gt;
 4000187        512000          0    1048576     00 [--------]&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to remove the project from &amp;lt;code&amp;gt;/etc/projects&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/projid&amp;lt;/code&amp;gt;:&lt;br /&gt;
 sed -i -e &#039;/4000187/d&#039; /etc/projects&lt;br /&gt;
 sed -i -e &#039;/4000187/d&#039; /etc/projid&lt;br /&gt;
&lt;br /&gt;
=== Some important notes concerning XFS ===&lt;br /&gt;
# The &#039;&#039;&#039;quotacheck&#039;&#039;&#039; command has no effect on XFS filesystems. The first time quota accounting is turned on (at mount time), XFS does an automatic quotacheck internally; afterwards, the quota system will always be completely consistent until quotas are manually turned off. &lt;br /&gt;
# There is &#039;&#039;&#039;no need for quota file(s)&#039;&#039;&#039; in the root of the XFS filesystem.&lt;br /&gt;
&lt;br /&gt;
== prov-backup-rsnapshot ==&lt;br /&gt;
Install the [[stoney_backup:_prov-backup-rsnapshot | prov-backup-rsnasphot ]] daemon script using the package manager:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -va sys-apps/sst-prov-backup-rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
If it is the first provisioning module running on this server (very likely) you first have to configure the provisioning daemon (you can skip this step if you have already another provisioning module running on this server)&lt;br /&gt;
&lt;br /&gt;
==== Provisioning global configuration ====&lt;br /&gt;
The global configuration for the provisioning daemon applies to all provisioning modules (@PAT: how where they installed? --[[User:Chrigu|Chrigu]] ([[User talk:Chrigu|talk]]) 09:58, 19 June 2014 (CEST)) running on the server. This configuration therefore contains information about the provisioning daemon itself and no information at all about the specific modules. &lt;br /&gt;
 /etc/Provisioning/Global.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2012 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 0&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# The number of seconds to wait before retry contacting the backend server during startup.&lt;br /&gt;
SLEEP = 10&lt;br /&gt;
&lt;br /&gt;
# Number of backend server connection retries during startup.&lt;br /&gt;
ATTEMPTS = 3&lt;br /&gt;
&lt;br /&gt;
[Operation Mode]&lt;br /&gt;
# The number of seconds to wait before retry contacting the backend server in case of a service interruptions.&lt;br /&gt;
SLEEP = 30&lt;br /&gt;
&lt;br /&gt;
# Number of backend server connection retries in case of a service interruptions.&lt;br /&gt;
ATTEMPTS = 3&lt;br /&gt;
&lt;br /&gt;
[Mail]&lt;br /&gt;
# Error messages are sent to the mail configured below.&lt;br /&gt;
SENDTO = &amp;lt;YOUR-MAIL-ADDRESS&amp;gt;&lt;br /&gt;
HOST = mail.stepping-stone.ch&lt;br /&gt;
PORT = 587&lt;br /&gt;
USERNAME = &amp;lt;YOUR-NOTIFICATION-EMAIL-ADDRESS&amp;gt;&lt;br /&gt;
PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
FROMNAME = Provisioning daemon&lt;br /&gt;
CA_DIR = /etc/ssl/certs&lt;br /&gt;
SSL = starttls&lt;br /&gt;
AUTH_METHOD = LOGIN&lt;br /&gt;
&lt;br /&gt;
# Additionally, you can be informed about creation, modification and deletion of services.&lt;br /&gt;
WANTINFOMAIL = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Provisioning daemon prov-backup-rsnapshot module ====&lt;br /&gt;
The module specific configuration is located in /etc/Provisioning/&amp;lt;Service&amp;gt;/&amp;lt;Type&amp;gt;.conf. In the case of the prov-backup-rsnapshot module this is &amp;lt;code&amp;gt;/etc/Provisioning/Backup/Rsnapshot.conf&amp;lt;/code&amp;gt;. (Note: Comments starting with /* are not in the configuration file, they are only in the wiki to add some additional information)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright (C) 2013 stepping stone GmbH&lt;br /&gt;
#                    Switzerland&lt;br /&gt;
#                    http://www.stepping-stone.ch&lt;br /&gt;
#                    support@stepping-stone.ch&lt;br /&gt;
#&lt;br /&gt;
# Authors:&lt;br /&gt;
#  Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
#  &lt;br /&gt;
# Licensed under the EUPL, Version 1.1.&lt;br /&gt;
#&lt;br /&gt;
# You may not use this work except in compliance with the&lt;br /&gt;
# Licence.&lt;br /&gt;
# You may obtain a copy of the Licence at:&lt;br /&gt;
#&lt;br /&gt;
# http://www.osor.eu/eupl&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in&lt;br /&gt;
# writing, software distributed under the Licence is&lt;br /&gt;
# distributed on an &amp;quot;AS IS&amp;quot; basis,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either&lt;br /&gt;
# express or implied.&lt;br /&gt;
# See the Licence for the specific language governing&lt;br /&gt;
# permissions and limitations under the Licence.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
/* If you want, you can override the log information from the global configuration file this might be useful for debugging */&lt;br /&gt;
[Global]&lt;br /&gt;
# If true the script logs every information to the log-file.&lt;br /&gt;
LOG_DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
# If true the script logs additional information to the log-file.&lt;br /&gt;
LOG_INFO = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs warnings to the log-file.&lt;br /&gt;
LOG_WARNING = 1&lt;br /&gt;
&lt;br /&gt;
#If true the script logs errors to the log-file.&lt;br /&gt;
LOG_ERR = 1&lt;br /&gt;
&lt;br /&gt;
/* Specify the hosts fully qualified domain name. This name will be used to perform some checks and also appear in the information and error mails */&lt;br /&gt;
ENVIRONMENT = &amp;lt;FQDN&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[Database]&lt;br /&gt;
BACKEND = LDAP&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.org&lt;br /&gt;
PORT = 636&lt;br /&gt;
ADMIN_USER = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
SERVICE_SUBTREE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
COOKIE_FILE = /etc/Provisioning/Backup/rsnapshot.cookie&lt;br /&gt;
DEFAULT_COOKIE = rid=001,csn=&lt;br /&gt;
SEARCH_FILTER = (&amp;amp;(entryCSN&amp;gt;=%entryCSN%)(sstProvisioningState=0))&lt;br /&gt;
&lt;br /&gt;
/* Specifies the service itself. As it is the prov-backup-rsnapshot module, the SERVICE is &amp;quot;Backup&amp;quot; and the TYPE is &amp;quot;Rsnapshot&amp;quot;.&lt;br /&gt;
 * The MODUS is as usual selfcare and the TRANSPORTAPI is LocalCLI. This is because the daemon is running on the same host as the&lt;br /&gt;
 * backup accounts are provisioned and the commands can be executed on this host using the cli.&lt;br /&gt;
 * For more information about MODUS and TRANSPORTAPI see https://int.stepping-stone.ch/wiki/provisioning.pl#Service_Konfiguration&lt;br /&gt;
 */&lt;br /&gt;
[Service]&lt;br /&gt;
MODUS = selfcare&lt;br /&gt;
TRANSPORTAPI = LocalCLI&lt;br /&gt;
SERVICE = Backup&lt;br /&gt;
TYPE = Rsnapshot&lt;br /&gt;
&lt;br /&gt;
SYSLOG = prov-backup-rsnapshot&lt;br /&gt;
&lt;br /&gt;
/* For the TRANSPORTAPI LocalCLI there is no gateway required because there is no connection to establish. So set HOST, USER and&lt;br /&gt;
 * DSA_FILE to whatever you want. Don&#039;t leave it blank, otherwise the provisioning daemon would log some error messages saying&lt;br /&gt;
 * these attributes are empty &lt;br /&gt;
 */&lt;br /&gt;
[Gateway]&lt;br /&gt;
HOST = localhost&lt;br /&gt;
USER = provisioning&lt;br /&gt;
DSA_FILE = none&lt;br /&gt;
&lt;br /&gt;
/* Information about the backup itself (how to setup everything). Note that the %uid% int the RSNAPSHOT_CONFIG_FILE parameter will&lt;br /&gt;
 * be replaced by the accounts UID. The script CREATE_CHROOT_CMD was installed with the prov-backup-rsnapshot module, so do not&lt;br /&gt;
 * change this parameter. The quota parameters (SET_QUOTA_CMD, MOUNTPOINT, QUOTA_FILE, PROJECTS_FILE and PROJID_FILE) represent &lt;br /&gt;
 * the quota setup as described on http://wiki.stoney-cloud.org/index.php/stoney_backup:_Server_set-up#Quota. If you followed this&lt;br /&gt;
 * manual, you can copy-paste them into your configuration file, otherwise adapt them according to your quota setup.&lt;br /&gt;
 */&lt;br /&gt;
[Backup]&lt;br /&gt;
RSNAPSHOT_CONFIG_FILE = /etc/rsnapshot/rsnapshot.conf.%uid%&lt;br /&gt;
SET_QUOTA_CMD = /usr/sbin/xfs_quota&lt;br /&gt;
CREATE_CHROOT_CMD = /usr/libexec/createBackupDirectory.sh&lt;br /&gt;
MOUNTPOINT = /var&lt;br /&gt;
QUOTA_FILE = /etc/backupSize&lt;br /&gt;
PROJECTS_FILE = /etc/projects&lt;br /&gt;
PROJID_FILE = /etc/projid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== backup utils ==&lt;br /&gt;
Install the backup utils (multiple scripts which help you to manage and monitor your backup server and backup accounts) using the package manager. For more information about the scripts please see the [[stoney_backup:_Server_set-up#stoney_backup_Service_Software | stoney backup Service Software]] section. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -va sys-apps/sst-backup-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Please refer to the configuration sections for the different scripts in [[stoney_backup:_Server_set-up#stoney_backup_Service_Software | stoney backup Service Software]].&lt;br /&gt;
&lt;br /&gt;
= stoney backup Service Software =&lt;br /&gt;
The stoney backup Service comes along with multiple scripts which help you to manage and monitor your backup server and accounts: &lt;br /&gt;
&lt;br /&gt;
We use rsnapshot - remote filesystem snapshot utility for the actual snapshots and a handful of wrapper scripts, that do things like:&lt;br /&gt;
* Read the users and their settings from the LDAP directory.&lt;br /&gt;
* Execute rsnapshot according to the users settings.&lt;br /&gt;
* Write the backup quotas backup (incoming), iterations (.snapshots) and free space to the users local backupSize file and update the LDAP directory.&lt;br /&gt;
* Inform the reseller, customer or user (depending on the settings in the LDAP directory) via mail, if the quota limit has been reached.&lt;br /&gt;
* Depending on the users settings in the LDAP directory, warning mail will be sent to the reseller, customer or user, if a backup was not executed on time.&lt;br /&gt;
&lt;br /&gt;
== writeAccountSize.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeAccountSize.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package and does the following:&lt;br /&gt;
* Calculates the used disk space (backup and iterations) for a given account and writes the corresponding values to:&lt;br /&gt;
*# The LDAP backend (used by the selfcare webinterface to display quota information):&lt;br /&gt;
*#* Backup space used (sstBackupSize): The disk space the account uses for the backup itself (disk space used under the &amp;lt;code&amp;gt;incoming&amp;lt;/code&amp;gt; folder of the users chroot-home directory)&lt;br /&gt;
*#* Snapshot space used (sstIncrementSize): The disk space the account uses for the iterations (disk space under the &amp;lt;code&amp;gt;.snapshot&amp;lt;/code&amp;gt; folder of the users chroot-home directory)&lt;br /&gt;
*# The file &amp;lt;code&amp;gt;etc/backupSize&amp;lt;/code&amp;gt; of the accounts chroot (used by the Sepiola Online Backup client):&lt;br /&gt;
* Checks if the user and/or reseller must be notified that there is no more disk space left for the given account&lt;br /&gt;
** Checks if the notification flag was passed, if not no notification will be triggered&lt;br /&gt;
** Calculates the used disk space (backup and iterations) in percentage&lt;br /&gt;
** Reads the notification threshold value from the LDAP backed&lt;br /&gt;
** If the disk space used (in percentage) is bigger than the value retrieved from the LDAP backend start the [[stoney_cloud:_Notification_Architecture | notification]] process with&lt;br /&gt;
*** Product: Given account UID&lt;br /&gt;
*** Service: Backup&lt;br /&gt;
*** Problem: Quota&lt;br /&gt;
* Pod documentation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    writeAccountSize.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This Script gets quota information from filesystem, size of incoming and&lt;br /&gt;
    snapshots directories, write the data to a file and the LDAP backend and&lt;br /&gt;
    sends an e-mail message for each account that is over quota to users&lt;br /&gt;
    e-mail address (from ldap directory) if notification flag is passed.&lt;br /&gt;
&lt;br /&gt;
    The configuration file for this script is stored in the backup-utils&lt;br /&gt;
    configuration directory (/etc/backup-utils/) and is called&lt;br /&gt;
    writeAccountSize.conf.&lt;br /&gt;
&lt;br /&gt;
    The script needs access to the quota program to get quota information.&lt;br /&gt;
    The script needs ldap access to get users e-mail address and quota&lt;br /&gt;
    information. The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
    -C configfile&lt;br /&gt;
        The configuration file.&lt;br /&gt;
&lt;br /&gt;
    -U uid&lt;br /&gt;
        The user id.&lt;br /&gt;
&lt;br /&gt;
    -n notification&lt;br /&gt;
        Start notification process if quota threshold is reached&lt;br /&gt;
&lt;br /&gt;
    -d debug&lt;br /&gt;
        Turns the debug mode on.&lt;br /&gt;
&lt;br /&gt;
    -h help&lt;br /&gt;
        This online help.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    writeAccountSize.pl -U uid [-C configuration file ] []-d debug] [-h&lt;br /&gt;
    help] [-n]&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2009-04-16 michael.rhyner@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2009-04-16 michael.rhyner@stepping-stone.ch created&lt;br /&gt;
    2009-04-30 michael.rhyner@stepping-stone.ch changed position based quota&lt;br /&gt;
    output parsing with correctly parsed elements&lt;br /&gt;
    2009-06-15 michael.rhyner@stepping-stone.ch added over quota check and&lt;br /&gt;
    sending e-mail&lt;br /&gt;
    2009-06-16 michael.rhyner@stepping-stone.ch renamed script and make it&lt;br /&gt;
    more general usable (e.g. for online backup, online storage, ...)&lt;br /&gt;
    2009-06-17 michael.rhyner@stepping-stone.ch changed mail message to read&lt;br /&gt;
    from a text file instead from configuration parameter&lt;br /&gt;
    2009-06-18 michael.rhyner@stepping-stone.ch corrected wrong regex to&lt;br /&gt;
    weed out the asterisk (*) in getQuotaSize&lt;br /&gt;
    2009-06-19 michael.rhyner@stepping-stone.ch corrected wrong evaluation&lt;br /&gt;
    success from subroutines and avoid message output when not in debug mode&lt;br /&gt;
    2009-06-22 michael.rhyner@stepping-stone.ch getQuotaSize: return&lt;br /&gt;
    immediately if no quota was set&lt;br /&gt;
    2009-06-24 michael.rhyner@stepping-stone.ch alert when used certain&lt;br /&gt;
    percentge of allowed space instead of more than allowed space&lt;br /&gt;
    2009-06-26 michael.rhyner@stepping-stone.ch values are presented in&lt;br /&gt;
    Gigabytes within notification message&lt;br /&gt;
    2009-07-23 michael.rhyner@stepping-stone.ch corrected wrong syslog&lt;br /&gt;
    severities for errors&lt;br /&gt;
    2009-07-24 michael.rhyner@stepping-stone.ch made e-mail address&lt;br /&gt;
    available within message body&lt;br /&gt;
    2013-08-19 pat.klaey@stepping-stone.ch write quota values also to the&lt;br /&gt;
    LDAP&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporate code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Config::IniFiles;&lt;br /&gt;
        Getopt::Std;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        Text::Template;&lt;br /&gt;
        POSIX;&lt;br /&gt;
        Notification;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
 /etc/backup-utils/writeAccountSize.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Global]&lt;br /&gt;
INCOMING_DIRECTORY = /incoming&lt;br /&gt;
ACCOUNT_SIZE_FILE = /etc/backupSize&lt;br /&gt;
SNAPSHOTS = 1&lt;br /&gt;
&lt;br /&gt;
[Syslog]&lt;br /&gt;
SYSLOG = rsnapshot&lt;br /&gt;
&lt;br /&gt;
[Directory]&lt;br /&gt;
LDAP_SERVER = ldaps://ldapm.tombstone.ch&lt;br /&gt;
LDAP_PORT = 636&lt;br /&gt;
LDAP_BIND_DN = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_BIND_PW = &amp;lt;password&amp;gt;&lt;br /&gt;
LDAP_BASE_DN = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_PERSON_BASE = ou=people,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_RESELLER_BASE = ou=reseller,ou=configuration,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
LDAP_EMAIL_ATTRIBUTE = mail&lt;br /&gt;
&lt;br /&gt;
[Notification]&lt;br /&gt;
EMAIL_SENDER = stepping stone GmbH Supprt &amp;lt;support@stepping-stone.ch&amp;gt;&lt;br /&gt;
EMAIL_ALERT_THRESHOLD = 85&lt;br /&gt;
&lt;br /&gt;
Salutation_Default_de-CH = Liebe Kundin / Lieber Kunde&lt;br /&gt;
Salutation_m_de-CH = Sehr geehrter Herr&lt;br /&gt;
Salutation_f_de-CH = Sehr geehrte Frau&lt;br /&gt;
Salutation_Default_en-GB = Dear customer&lt;br /&gt;
Salutation_m_en-GB = Dear Mr.&lt;br /&gt;
Salutation_f_en-GB = Dear Mrs.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
 /usr/libexec/backup-utils/writeAccountSize.pl -U 4000080 -d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Debug modus was turned on&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersHomeDirectory: $localUsersHomeDirectory: /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersHomeDirectory: The $localUsersHomeDirectory /var/backup/080/4000080/home/4000080 exists&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersHomeDirectory:   /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersIncomingDirectory: /incoming&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localIncomingPath:           /var/backup/080/4000080/home/4000080/incoming&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: The $localIncomingPath /var/backup/080/4000080/home/4000080/incoming exists&lt;br /&gt;
Total Quota: 1048576 kilobytes&lt;br /&gt;
Total used Space: 0 kilobytes&lt;br /&gt;
Incoming Size: 0 kilobytes&lt;br /&gt;
Debug sub getSnapshotsSize: $localUsedQuota:   0&lt;br /&gt;
Debug sub getSnapshotsSize: $localSnapshotsSize:   0&lt;br /&gt;
Debug writeAccountSize: Working on /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
Debug: wrote 1024 0 0 to /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstBackupSize =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstIncrementSize =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
Alert Threshold: 85 %&lt;br /&gt;
Calculated value: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now write some data (200 megaytes in this example) into the users incoming directory and then execute the script again:&lt;br /&gt;
 dd if=/dev/zero of=/var/backup/080/4000080/home/4000080/incoming/test.zeros bs=1024k count=200&lt;br /&gt;
 chown 4000080:4000080 /var/backup/080/4000080/home/4000080/incoming/test.zeros&lt;br /&gt;
 /usr/libexec/backup-utils/writeAccountSize.pl -U 4000080 -d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Debug modus was turned on&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersHomeDirectory: $localUsersHomeDirectory: /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersHomeDirectory: The $localUsersHomeDirectory /var/backup/080/4000080/home/4000080 exists&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersHomeDirectory:   /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersIncomingDirectory: /incoming&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localIncomingPath:           /var/backup/080/4000080/home/4000080/incoming&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: The $localIncomingPath /var/backup/080/4000080/home/4000080/incoming exists&lt;br /&gt;
Total Quota: 1048576 kilobytes&lt;br /&gt;
Total used Space: 204800 kilobytes&lt;br /&gt;
Incoming Size: 204800 kilobytes&lt;br /&gt;
Debug sub getSnapshotsSize: $localUsedQuota:   204800&lt;br /&gt;
Debug sub getSnapshotsSize: $localSnapshotsSize:   0&lt;br /&gt;
Debug writeAccountSize: Working on /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
Debug: wrote 1024 200 0 to /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstBackupSize =&amp;gt; 209715200&lt;br /&gt;
&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstIncrementSize =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
Alert Threshold: 85 %&lt;br /&gt;
Calculated value: 19.53125&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Everything seems to be working fine!&lt;br /&gt;
&lt;br /&gt;
== snapshot.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/snapshot.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package and does the following:&lt;br /&gt;
* Read interval parameter value passed&lt;br /&gt;
** The interval parameter value can be daily, weekly, monthly (or yearly)&lt;br /&gt;
* Find all backup active accounts for which the rsnapshot command must be executed (depending on the given interval)&lt;br /&gt;
** Filter to find these accounts: &amp;lt;code&amp;gt;(&amp;amp;(sstBackupInterval&amp;lt;INTERVAL&amp;gt;=*)(sstIsActive=TRUE))&amp;lt;/code&amp;gt; for example for the daily rsnapshot the filter is &amp;lt;code&amp;gt;(&amp;amp;(sstBackupIntervalDaily=*)(sstIsActive=TRUE))&amp;lt;/code&amp;gt;&lt;br /&gt;
*** In other words this means: Get me all acounts that have for &amp;lt;code&amp;gt;sstBackupInterval&amp;lt;INTERVAL&amp;gt;&amp;lt;/code&amp;gt; a value defined AND &amp;lt;code&amp;gt;sstIsActive&amp;lt;/code&amp;gt; is set to &amp;quot;TRUE&amp;quot;&lt;br /&gt;
* According to the interval given and the account UID calculate the rsnapshot command for all these accounts&lt;br /&gt;
** For example&lt;br /&gt;
*** Account UID: 4000000 &lt;br /&gt;
*** Interval: daily&lt;br /&gt;
*** Resulting rsnapshot command: /usr/bin/nice -n 19 /usr/bin/rsnapshot  -c /etc/rsnapshot/rsnapshot.conf.4000000 daily (if you use the [[#snapshot.pl_Configuration | configuration]] below)&lt;br /&gt;
* Execute all these commands&lt;br /&gt;
** Use controlled parallel execution, you can specify how many commands can be executed in parallel (see [[#snapshot.pl_Configuration | configuration]] below)&lt;br /&gt;
* Pod documentation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    snapshot.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script gets all active online backup accounts from the LDAP backend&lt;br /&gt;
    for which the rsnapshot process for the given interval must be executed.&lt;br /&gt;
    According to these accounts and the given interval, the commands to be&lt;br /&gt;
    executed are generated and finally executed. The commands can be&lt;br /&gt;
    executed in parallel, however there is a limit defined in the&lt;br /&gt;
    configuration file which limits the amount of parallel running&lt;br /&gt;
    processes.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    ./snapshot.pl --interval interval [--debug] [--help]&lt;br /&gt;
&lt;br /&gt;
OPTIONS&lt;br /&gt;
    --interval/-i interval&lt;br /&gt;
        Specifies the rsnapshot interval (can be hourly, daily, weekly,&lt;br /&gt;
        monthly or yearly)&lt;br /&gt;
&lt;br /&gt;
    --debug/-d&lt;br /&gt;
        Turns on debug mode&lt;br /&gt;
&lt;br /&gt;
    --help/-h&lt;br /&gt;
        Shows this help&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2012-03-19 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2012-03-19 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporated code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Getopt::Long;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        Parallel::ForkManager;&lt;br /&gt;
        Time::Stopwatch;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
There are two things to do in this step: &lt;br /&gt;
* Configure the rsnapshot root directory&lt;br /&gt;
* Configure the snapshot.pl script itself&lt;br /&gt;
&lt;br /&gt;
==== rsnaphot configuration directory ====&lt;br /&gt;
The users individual rsnapshot configurations are stored under &amp;lt;code&amp;gt;/etc/rsnapshot&amp;lt;/code&amp;gt;. Please make sure, that the directory exists:&lt;br /&gt;
 ls -al /etc | grep rsnapshot&lt;br /&gt;
&lt;br /&gt;
 drwx------  2 root   root      64 30. Aug 20:20 rsnapshot&lt;br /&gt;
&lt;br /&gt;
If not, create it:&lt;br /&gt;
 mkdir /etc/rsnapshot&lt;br /&gt;
 chmod 700 /etc/rsnapshot&lt;br /&gt;
&lt;br /&gt;
==== snapshot.pl Configuration ====&lt;br /&gt;
The snapshot.pl script is responsible for the execution of rsnapshot according to the users settings.&lt;br /&gt;
 /etc/backup-utils/snapshot.conf &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[General]&lt;br /&gt;
MaxParallelProcesses = 5&lt;br /&gt;
Rsnapshot_command = /usr/bin/nice -n 19 /usr/bin/rsnapshot  -c /etc/rsnapshot/rsnapshot.conf.%uid% %interval%&lt;br /&gt;
&lt;br /&gt;
[LDAP]&lt;br /&gt;
Host = ldaps://ldapm.tombstone.ch&lt;br /&gt;
Port = 636&lt;br /&gt;
User = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
Password = &amp;lt;Password&amp;gt;&lt;br /&gt;
CA_Path = /etc/ssl/certs&lt;br /&gt;
Accounts_Base = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Legend: At runtime the following placeholders are replaced as follows&lt;br /&gt;
* &#039;&#039;&#039;%uid%&#039;&#039;&#039;: The backup account and login uid as a numeric number. For example: 4000205.&lt;br /&gt;
* &#039;&#039;&#039;%interval%&#039;&#039;&#039;: The backup level to be executed. Possible values are hourly, daily, weekly, monthly and yearly.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
Before adding the necessary cronjob entries, we need to make sure, that we&#039;ve configured the snapshot.pl script correctly:&lt;br /&gt;
 /usr/libexec/backup-utils/snapshot.pl --interval daily -d&lt;br /&gt;
&lt;br /&gt;
If everything worked as planned, you should receive feedback looking roughly like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INFO:  Starting rsnapshot for interval daily with maximum 5 parallel processes&lt;br /&gt;
&lt;br /&gt;
INFO:  Executing snapshot for 4000080&lt;br /&gt;
&lt;br /&gt;
INFO:  Executing snapshot for 4000079&lt;br /&gt;
&lt;br /&gt;
INFO:  Snapshot process for 4000079 finished in 0.18 seconds with status 0&lt;br /&gt;
&lt;br /&gt;
INFO:  Snapshot process for 4000080 finished in 0.19 seconds with status 0&lt;br /&gt;
&lt;br /&gt;
INFO:  rsnapshot for all backups done. Took 0.24 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just to make sure, that everything did work out fine, execute &amp;lt;code&amp;gt;writeAccountSize.pl&amp;lt;/code&amp;gt; again:&lt;br /&gt;
 /usr/libexec/backup-utils/writeAccountSize.pl -U 4000080 -d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Debug modus was turned on&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersHomeDirectory: $localUsersHomeDirectory: /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersHomeDirectory: The $localUsersHomeDirectory /var/backup/080/4000080/home/4000080 exists&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersHomeDirectory:   /var/backup/080/4000080/home/4000080&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localUsersIncomingDirectory: /incoming&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: $localIncomingPath:           /var/backup/080/4000080/home/4000080/incoming&lt;br /&gt;
&lt;br /&gt;
Debug sub checkUsersIncomingDirectory: The $localIncomingPath /var/backup/080/4000080/home/4000080/incoming exists&lt;br /&gt;
Total Quota: 1048576 kilobytes&lt;br /&gt;
Total used Space: 409600 kilobytes&lt;br /&gt;
Incoming Size: 204800 kilobytes&lt;br /&gt;
Debug sub getSnapshotsSize: $localUsedQuota:   409600&lt;br /&gt;
Debug sub getSnapshotsSize: $localSnapshotsSize:   204800&lt;br /&gt;
Debug writeAccountSize: Working on /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
Debug: wrote 1024 200 200 to /var/backup/080/4000080/etc/backupSize&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstBackupSize =&amp;gt; 209715200&lt;br /&gt;
&lt;br /&gt;
DEBUG:  Successfully executed the following modifications for entry uid=4000080,ou=accounts,ou=backup,ou=services,o=stepping-stone,c=ch: sstIncrementSize =&amp;gt; 209715200&lt;br /&gt;
&lt;br /&gt;
Alert Threshold: 85 %&lt;br /&gt;
Calculated value: 39.0625&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the total used space has risen to 39.0625.&lt;br /&gt;
&lt;br /&gt;
=== Cronjobs ===&lt;br /&gt;
After making sure, that everything worked as planned, you can update your crontab entry:&lt;br /&gt;
 crontab -e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Rsnapshot for all users&lt;br /&gt;
30 22 * * * /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
15 22 * * sun /usr/libexec/backup-utils/snapshot.pl --interval weekly&lt;br /&gt;
00 22 1 * * /usr/libexec/backup-utils/snapshot.pl --interval monthly&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* TBD: Maybe this is not optimal if there is a lot of data to rotate. In this case, it might be that for example weekly and daily snapshot both run at the same time what might lead to strange results. &lt;br /&gt;
* Workarounds: &lt;br /&gt;
** Simple/short version: Instead one could create another wrapper script which is called everyday and does some simple logic:&lt;br /&gt;
** Is today the first day of a month? &lt;br /&gt;
*** Yes: Is today sunday? &lt;br /&gt;
**** Yes: Execute monthly then weekly then daily rsnapshots using the snapshot.pl script (but wait for each interval to finish before starting the next)&lt;br /&gt;
**** No: Execute monthly then daily rsnapshots using the snapshot.pl script (but wait for monthly interval to finish before starting the daily)&lt;br /&gt;
*** No: Is today sunday?&lt;br /&gt;
**** Yes: Execute weekly then daily rsnapshots using the snapshot.pl script (but wait for weekly interval to finish before starting the daily)&lt;br /&gt;
**** No: Execute daily rsnapshots using the snapshot.pl script&lt;br /&gt;
** Complex/long version: Adapt the snapshot.pl script and call it every day without interval parameter. The script does the logic described above.&lt;br /&gt;
This avoids the above mentioned collision&lt;br /&gt;
&lt;br /&gt;
(Complex) / short version: rule via cronjobs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Rsnapshot for all users&lt;br /&gt;
30 22 * * 1-6 [ $( date +\%d ) -gt 1 ] &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
15 22 * * 7 [ $( date +\%d ) -gt 1 ] &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval weekly &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
00 22 1 * * /usr/libexec/backup-utils/snapshot.pl --interval monthly &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval weekly &amp;amp;&amp;amp; /usr/libexec/backup-utils/snapshot.pl --interval daily&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== scheduleWarning.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/scheduleWarning.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package and does the following:&lt;br /&gt;
* The basic task of this script is simple: For the given account&lt;br /&gt;
** Check if the planned backups were started&lt;br /&gt;
*** If not, start the [[stoney_cloud:_Notification_Architecture | notification]] process with&lt;br /&gt;
**** Product: Given account UID&lt;br /&gt;
**** Service: Backup&lt;br /&gt;
**** Problem: Schedule &lt;br /&gt;
** Check if the planned backups finished successfully&lt;br /&gt;
*** If not, start the [[stoney_cloud:_Notification_Architecture | notification]] process with&lt;br /&gt;
**** Product: Given account UID&lt;br /&gt;
**** Service: Backup&lt;br /&gt;
**** Problem: Unsuccessful&lt;br /&gt;
&lt;br /&gt;
As the backup clients distributed by stepping stone GmbH upload metadata XML before (scheduling information and start time) and after (end time and backup status) the actual backup, the scheduleWarning.pl script is able to verify whether or not a planned backup has been executed and whether or not the backup was successful. &lt;br /&gt;
&lt;br /&gt;
* Pod documentation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    scheduleWarning.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script tests whether a planed backup was successful or not. There&lt;br /&gt;
    are two different typs of failure.&lt;br /&gt;
&lt;br /&gt;
    1. The Backup did not start&lt;br /&gt;
        The first type of error is that a backup is scheduled for YYYY-MM-DD&lt;br /&gt;
        at HH:MM, but the backup don&#039;t start at this specified time. A&lt;br /&gt;
        possible reason could be that the computer was shut down.&lt;br /&gt;
&lt;br /&gt;
    2.The backup was not successful&lt;br /&gt;
        The second type of error is that a backup started as scheduled but&lt;br /&gt;
        did not finish successfully. There are different reasons for this&lt;br /&gt;
        error.&lt;br /&gt;
&lt;br /&gt;
    If a backup wasn&#039;t successful the script checks which type of error&lt;br /&gt;
    occured. It reads the XML files which are stored on the server and&lt;br /&gt;
    compares the given information. If the error is detected, the script&lt;br /&gt;
    stats the norification process with the information of the error.&lt;br /&gt;
&lt;br /&gt;
    If a user has more than one computer backed-up, the script tests one&lt;br /&gt;
    computer after the other. The mail(s) sent by the programm also&lt;br /&gt;
    contain(s) the information which computer is affected.&lt;br /&gt;
&lt;br /&gt;
OPTION&lt;br /&gt;
    -U uid&lt;br /&gt;
        The -U option is required to run the script, it indicates for which&lt;br /&gt;
        uid the script is executed.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    scheduleWarning.pl [-U user]&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2010-04-14 created Pat Kläy &amp;lt;pat.klaey@stepping-stone.ch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2010-04-14 v0.01, created pkl&lt;br /&gt;
    2010-08-24 v0.02, modified pkl&lt;br /&gt;
        New using Net::SMTP::TLS to send mails&lt;br /&gt;
&lt;br /&gt;
    2013-09-13 v0.03, modified pat.klaey@stepping-stone.ch&lt;br /&gt;
        Changes to use the script with the new backup infrastructure (read&lt;br /&gt;
        more information from LDAP, use Notification lib to send mails)&lt;br /&gt;
&lt;br /&gt;
USES&lt;br /&gt;
    strict;&lt;br /&gt;
    warnings;&lt;br /&gt;
    XML::Simple;&lt;br /&gt;
    Config::IniFiles;&lt;br /&gt;
    XML::Validator::Schema;&lt;br /&gt;
    Date::Calc qw(:all);&lt;br /&gt;
    Date::Manip;&lt;br /&gt;
    Schedule::Cron::Events;&lt;br /&gt;
    DateTime::Format::Strptime;&lt;br /&gt;
    Sys::Syslog;&lt;br /&gt;
    XML::SAX::ParserFactory;&lt;br /&gt;
    Getopt::Std;&lt;br /&gt;
    MIME::Base64;&lt;br /&gt;
    Authen::SASL;&lt;br /&gt;
    Net::LDAPS;&lt;br /&gt;
    Net::SMTP::TLS;&lt;br /&gt;
    Cwd &#039;abs_path&#039;;&lt;br /&gt;
    PerlUtil::Logging;&lt;br /&gt;
    PerlUtil::LDAPUtil;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
 /etc/backup-utils/scheduleWarning.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Backup]&lt;br /&gt;
CHROOT_DIRECTORY = /var/backup/%lastthree%/%user%&lt;br /&gt;
&lt;br /&gt;
[XML]&lt;br /&gt;
SCHEDULE_FILE = %homeDirectory%/incoming/%computerName%/.sepiola_backup/scheduler.xml&lt;br /&gt;
SCHEDULE_XSD = /etc/backup-utils/schema/scheduler_schema.xsd&lt;br /&gt;
BACKUP_ENDED_FILE = %homeDirectory%/incoming/%computerName%/.sepiola_backup/backupEnded.xml&lt;br /&gt;
BACKUP_ENDED_XSD = /etc/backup-utils/schema/backupended_schema.xsd&lt;br /&gt;
BACKUP_STARTED_FILE = %homeDirectory%/incoming/%computerName%/.sepiola_backup/backupStarted.xml&lt;br /&gt;
BACKUP_STARTED_XSD = /etc/backup-utils/schema/backupstarted_schema.xsd&lt;br /&gt;
&lt;br /&gt;
[TEMPLATE]&lt;br /&gt;
Salutation_Default_de-CH = Liebe Kundin / Lieber Kunde&lt;br /&gt;
Salutation_m_de-CH = Sehr geehrter Herr&lt;br /&gt;
Salutation_f_de-CH = Sehr geehrte Frau&lt;br /&gt;
Salutation_Default_en-GB = Dear customer&lt;br /&gt;
Salutation_m_en-GB = Dear Mr.&lt;br /&gt;
Salutation_f_en-GB = Dear Mrs.&lt;br /&gt;
&lt;br /&gt;
[LDAP]&lt;br /&gt;
&lt;br /&gt;
SERVER = ldaps://ldapm.tombstone.ch&lt;br /&gt;
PORT = 636&lt;br /&gt;
DEBUG = 1&lt;br /&gt;
&lt;br /&gt;
ADMIN_DN = cn=Manager,dc=stoney-cloud,dc=org &lt;br /&gt;
ADMIN_PASSWORD = &amp;lt;Password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BACKUP_BASE = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
PEOPLE_BASE = ou=people,dc=stoney-cloud,dc=org&lt;br /&gt;
RESELLER_BASE = ou=reseller,ou=configuration,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
SCOPE = sub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== checkBackups.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeDate.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package. It is a wrapper around the above mentioned &amp;lt;code&amp;gt;writeAccountSize.pl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;scheduleWarning.pl&amp;lt;/code&amp;gt; scripts (if you configure it accordingly).&lt;br /&gt;
* As mentioned the script is a wrapper for calling the quota and scheduler information scripts:&lt;br /&gt;
** It gets all active backup accounts from the LDAP directory&lt;br /&gt;
** According to the CLI parameters passed it calles for all these accounts:&lt;br /&gt;
*** The quota checking script (this script can be defined in the configuration file, see [[stoney_backup:_Server_set-up#Configuration_6 | configuration]] section below)&lt;br /&gt;
*** The scheduler checking script (this script can be defined in the configuration file, see [[stoney_backup:_Server_set-up#Configuration_6 | configuration]] section below)&lt;br /&gt;
* Pod documentation: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    checkBackups.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script processes all active backup accounts and checks (according&lt;br /&gt;
    to the command line options) the quota and/or the scheduled backups for&lt;br /&gt;
    the given accounts.&lt;br /&gt;
&lt;br /&gt;
    The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
OPTIONS&lt;br /&gt;
    --schedule/-s&lt;br /&gt;
        Checks schedule information by calling the defined script&lt;br /&gt;
&lt;br /&gt;
    --quota/-s&lt;br /&gt;
        Checks the quota values by calling the defined script&lt;br /&gt;
&lt;br /&gt;
    --notify/-n&lt;br /&gt;
        Passes the notify flag to the called scripts&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    ./checkBackups.pl [--quota] [--schedule] [--notify]&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --quota&lt;br /&gt;
        Checks and writes the quota for all active backup accounts. The user&lt;br /&gt;
        and/or reseller will NOT be informed if any quota threshold is&lt;br /&gt;
        reached&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --quota --notify&lt;br /&gt;
        Checks and writes the quota for all active backup accounts. The user&lt;br /&gt;
        and/or reseller will be informed if any quota threshold is reached.&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --schedule&lt;br /&gt;
        Checkes all active backup account if the scheduled backup was&lt;br /&gt;
        executed and successful. The --schedule option will allways trigger&lt;br /&gt;
        a notification mail to the user and/or reseller.&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --schedule --quota&lt;br /&gt;
        Checks both, quota and schedule, for all active backup accounts.&lt;br /&gt;
        Only schedule will trigger notification mails.&lt;br /&gt;
&lt;br /&gt;
    ./checkBackups.pl --schedule --quota --notify&lt;br /&gt;
        Checks both, quota and schedule, for all active backup accounts.&lt;br /&gt;
        Both, quota and schedule, will trigger notification mails.&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2013-09-17 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2013-09-17 pat.klaey@stepping-stone.ch created&lt;br /&gt;
    2013-11-19 pat.klaey@stepping-stone.ch Added options to be able to check&lt;br /&gt;
    quota, schedule or both in one run&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporated code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Getopt::Long;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
        Cwd &#039;abs_path&#039;;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
In the configuration you have to define two simple things: &lt;br /&gt;
# Which script to call for quota checks and scheduler checks&lt;br /&gt;
# How to access the LDAP backend&lt;br /&gt;
 /etc/backup-utils/checkBackups.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Scripts]&lt;br /&gt;
CheckQuotaScript = /usr/libexec/backup-utils/writeAccountSize.pl&lt;br /&gt;
CheckScheduleScript = /usr/libexec/backup-utils/scheduleWarning.pl&lt;br /&gt;
&lt;br /&gt;
[LDAP]&lt;br /&gt;
Server = ldaps://ldapm.tombstone.ch&lt;br /&gt;
Port = 636&lt;br /&gt;
Username = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
Password = &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
AccountBase = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cronjobs ====&lt;br /&gt;
As you can pass the notification flag to the scripts, you can call the quota script say all 10 minutes. This makes sense if followed the configuration section, as the writeAccountSize.pl script writes the quota values to the LDAP backend which will then be visible in the selfcare webinterface. Like that you have a more or less up to date quota representation in the selfcare webinterface. On the other side, you don&#039;t want to send notification mails to the user every 10 minutes. It might be enough to send them once a day, so the cronjobs may look like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Check backups&lt;br /&gt;
15 12 * * * /usr/libexec/backup-utils/checkBackups.pl --schedule --quota --notify&lt;br /&gt;
&lt;br /&gt;
# Write quota values every 10 minutes&lt;br /&gt;
*/10 * * * * /usr/libexec/backup-utils/checkBackups.pl --quota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ResellerBackupBilling.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeDate.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package. The pod documentation says all what needs to be said about this script.&lt;br /&gt;
* Pod documentation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    ResellerBackupBilling.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script processes the reseller with the passed UID and creates a&lt;br /&gt;
    very simplistic backup-billing overview which then is sent to the&lt;br /&gt;
    address specified in the configuration file. The billing overview&lt;br /&gt;
    contains all backup accounts which belong to the given reseller as well&lt;br /&gt;
    as their quota. According to the billing plan specified in the&lt;br /&gt;
    configuration file, the script also calculates the price for each backup&lt;br /&gt;
    account.&lt;br /&gt;
&lt;br /&gt;
    The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
OPTIONS&lt;br /&gt;
    --reseller/-r UID&lt;br /&gt;
        Process the reseller with this UID&lt;br /&gt;
&lt;br /&gt;
    --debug/-d&lt;br /&gt;
        Turn on debug mode&lt;br /&gt;
&lt;br /&gt;
    --help/-h&lt;br /&gt;
        Display this help&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    ./ResellerBackupBilling.pl --reseller UID [--debug] [--help]&lt;br /&gt;
&lt;br /&gt;
    ./ResellerBackupBilling.pl --reseller 2000000&lt;br /&gt;
        This processes the reseller with the UID 200000 and sends the&lt;br /&gt;
        billing overview to the address specified in the configuration file&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2014-01-24 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2014-01-24 pat.klaey@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporated code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Getopt::Long;&lt;br /&gt;
        PerlUtil::LDAPUtil;&lt;br /&gt;
        PerlUtil::Logging;&lt;br /&gt;
        PerlUtil::Mail;&lt;br /&gt;
        Number::Format;&lt;br /&gt;
        File::Basename;&lt;br /&gt;
        Cwd &#039;abs_path&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
You have to configure basically three things:&lt;br /&gt;
# How to access the LDAP directory (similar to the other backup-util scripts)&lt;br /&gt;
# Define a pricing schema&lt;br /&gt;
#* Define a base price for an account&lt;br /&gt;
#* Define a GB price&lt;br /&gt;
#* The total price for each account will finall be: &amp;lt;code&amp;gt;base price + ( quota in GB * GB price )&amp;lt;/code&amp;gt;&lt;br /&gt;
# How to send the mail&lt;br /&gt;
#* You need to enter a valid (outgoing) mail server and corresponding port &lt;br /&gt;
#* User and password to authenticate on the mail server&lt;br /&gt;
#* A valid recipient (typically the company’s backoffice address) and sender&lt;br /&gt;
&lt;br /&gt;
 /etc/backup-utils/ResellerBackupBilling.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[LDAP]&lt;br /&gt;
Server = ldaps://ldapm.tombstone.ch&lt;br /&gt;
Port = 636&lt;br /&gt;
Username = cn=Manager,dc=stoney-cloud,dc=org&lt;br /&gt;
Password = &amp;lt;Password&amp;gt;&lt;br /&gt;
AccountBase = ou=accounts,ou=backup,ou=services,dc=stoney-cloud,dc=org&lt;br /&gt;
CustomerBase = ou=customers,dc=stoney-cloud,dc=org&lt;br /&gt;
ResellerBase = ou=reseller,dc=stoney-cloud,dc=org&lt;br /&gt;
&lt;br /&gt;
[Pricing]&lt;br /&gt;
AccountBasePrice = 5.00&lt;br /&gt;
AccountGBPrice = 0.50&lt;br /&gt;
&lt;br /&gt;
[Mail]&lt;br /&gt;
Server = &amp;lt;Mail-Server&amp;gt;&lt;br /&gt;
Port = 587&lt;br /&gt;
Username = &amp;lt;Sender-Email-Address&amp;gt;&lt;br /&gt;
Password = &amp;lt;Password&amp;gt;&lt;br /&gt;
To = &amp;lt;Backoffice&amp;gt;&lt;br /&gt;
From = Billing Script &amp;lt;E-Mail-Address&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== writeDate.pl ==&lt;br /&gt;
This script is installed to &amp;lt;code&amp;gt;/usr/libexec/backup-utils/writeDate.pl&amp;lt;/code&amp;gt; by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package. This is a very simple script, it simply writes the current date and time to a file on the backup server before the rsnapshots rotates the backup. This date is used by the Sepiola Online Backup Client to display the iterations and their dates.&lt;br /&gt;
* Pod documentation: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
    writeDate.pl&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
    This script writes the current date and time into the file for each&lt;br /&gt;
    backup before the rsnapshots rotates the backup. This information is&lt;br /&gt;
    used by the Sepiola Online Backup Client.&lt;br /&gt;
&lt;br /&gt;
    The configuration file for this script is stored under&lt;br /&gt;
    /etc/backup-utils/writeDate.conf&lt;br /&gt;
&lt;br /&gt;
    The script uses syslog for logging purposes.&lt;br /&gt;
&lt;br /&gt;
    Command Line Interface (CLI) parameters:&lt;br /&gt;
&lt;br /&gt;
    -C configfile&lt;br /&gt;
        The configuration file.&lt;br /&gt;
&lt;br /&gt;
    -U uid&lt;br /&gt;
        The user id.&lt;br /&gt;
&lt;br /&gt;
    -d debug&lt;br /&gt;
        Turns the debug mode on.&lt;br /&gt;
&lt;br /&gt;
    -h help&lt;br /&gt;
        This online help.&lt;br /&gt;
&lt;br /&gt;
USAGE&lt;br /&gt;
    writeDate.pl [-C configuration_file] [-U uid] [-d debug] [-h help]&lt;br /&gt;
&lt;br /&gt;
CREATED&lt;br /&gt;
    2007-09-16 michael.eichenberger@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
VERSION&lt;br /&gt;
    2013-09-01 michael.eichenberger@stepping-stone.ch updated to reflect&lt;br /&gt;
    changes in the new backup environment&lt;br /&gt;
&lt;br /&gt;
        2007-09-16 michael.eichenberger@stepping-stone.ch created&lt;br /&gt;
&lt;br /&gt;
INCORPORATED CODE&lt;br /&gt;
    Incorporate code with use:&lt;br /&gt;
&lt;br /&gt;
        warnings;&lt;br /&gt;
        strict;&lt;br /&gt;
        Config::IniFiles;&lt;br /&gt;
        Getopt::Std;&lt;br /&gt;
        Sys::Syslog;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
 /etc/backup-utils/writeDate.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Global]&lt;br /&gt;
BACKUP_DIRECTORY = /incoming&lt;br /&gt;
BACKUP_BACKUP_TIME_FILE = /.sepiola_backup/backupTime&lt;br /&gt;
&lt;br /&gt;
[Syslog]&lt;br /&gt;
SYSLOG = rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rsnapshot wrapper bash scripts ==&lt;br /&gt;
There are two rsnapshot wrapper scripts (these are bash scripts), they are installed by the &amp;lt;code&amp;gt;sys-apps/sst-backup-utils&amp;lt;/code&amp;gt; package:&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/libexec/backup-utils/rsnapshotPreExecWrapper.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
** This script is executed before the rsnapshot process and simply calls the [[stoney_backup:_Server_set-up#writeDate.pl | writeDat.pl ]] script.&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/libexec/backup-utils/rsnapshotPostExecWrapper.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
** This script is executed after the rsnapshot process and simply calls the [[stoney_backup:_Server_set-up#writeAccountSize.pl | writeAccountSize.pl ]] script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These scripts do not need any configuration.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [http://www.openldap.org/ OpenLDAP], an open source implementation of the Lightweight Directory Access Protocol.&lt;br /&gt;
* [http://arthurdejong.org/nss-pam-ldapd/ nss-pam-ldapd], a Name Service Switch (NSS) module that allows your LDAP server to provide user account, group, host name, alias, netgroup, and basically any other information that you would normally get from /etc flat files or NIS.&lt;br /&gt;
* [http://www.gentoo.org/doc/de/ldap-howto.xml Gentoo Leitfaden zur OpenLDAP Authentifikation].&lt;br /&gt;
* [http://wiki.gentoo.org/wiki/Centralized_authentication_using_OpenLDAP Centralized authentication using OpenLDAP].&lt;br /&gt;
* [https://code.google.com/p/openssh-lpk/source/browse/trunk/schemas/openssh-lpk_openldap.schema openssh-lpk_openldap.schema] OpenSSH LDAP Public Keys.&lt;br /&gt;
* [http://sourceforge.net/projects/linuxquota/ linuxquota] Linux DiskQuota.&lt;br /&gt;
* [http://www.rsnapshot.org/ rsnapshot], a remote filesystem snapshot utility, based on rsync.&lt;br /&gt;
* [http://olivier.sessink.nl/jailkit/ Jailkit], set of utilities to limit user accounts to specific files using chroot() and or specific commands. Also includes a tool to build a chroot environment.&lt;br /&gt;
* [http://www.busybox.net/ Busybox] BusyBox combines tiny versions of many common UNIX utilities into a single small executable. Useful to reduce the number of files (and thus the complexity) when building a chroot. &lt;br /&gt;
&lt;br /&gt;
[[Category:stoney backup]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3607</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3607"/>
		<updated>2014-06-08T10:21:59Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person ([[#Person_creation_.28POST.29|POST]]).&lt;br /&gt;
* Retrieve multiple people in the form of a list ([[#People_collection_retrieval_.28GET.29|GET]]).&lt;br /&gt;
* Retrieve a single person ([[#Person_element_retrieval_.28GET.29|GET]]).&lt;br /&gt;
* Update an existing person ([[#Person_update_.28PUT.29|PUT]]).&lt;br /&gt;
* Update one or more values of an existing person ([[#Person_partly_update_.28PATCH.29|PATCH]]).&lt;br /&gt;
* Delete a single person ([[#Person_deletion_.28DELETE.29|DELETE]]).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resellers&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location URI the person belongs to.&lt;br /&gt;
|A valid [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location element URI&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;resellers&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;customers&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location URI the person belongs to.&lt;br /&gt;
|A valid [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location element URI&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;customers&amp;quot;: &amp;quot;https://api.example.com/v1/customers/4000002&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3606</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3606"/>
		<updated>2014-06-08T10:18:19Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resellers&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location URI the person belongs to.&lt;br /&gt;
|A valid [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location element URI&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;resellers&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;customers&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location URI the person belongs to.&lt;br /&gt;
|A valid [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location element URI&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;customers&amp;quot;: &amp;quot;https://api.example.com/v1/customers/4000002&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3605</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3605"/>
		<updated>2014-06-08T10:16:43Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person element retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;resellers&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location URI the person belongs to.&lt;br /&gt;
|A valid [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location element URI&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;resellers&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;customers&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location URI the person belongs to.&lt;br /&gt;
|A valid [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location element URI&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;customers&amp;quot;: &amp;quot;https://api.example.com/v1/customers/4000002&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3604</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3604"/>
		<updated>2014-06-08T10:11:28Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person element retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToReseller&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] location URI the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomer&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] location URI the person belongs to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3603</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3603"/>
		<updated>2014-06-08T10:00:35Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person partly update request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3602</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3602"/>
		<updated>2014-06-08T09:57:23Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person element retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3601</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3601"/>
		<updated>2014-06-08T09:51:50Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person element retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3600</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3600"/>
		<updated>2014-06-08T09:44:37Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Resellers_Resource_-_REST_API|reseller&#039;s]] identification number the customer resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToResellerId&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The [[stoney_core:_Customers_Resource_-_REST_API|customer&#039;s]] identification number the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3599</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3599"/>
		<updated>2014-06-08T09:40:33Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3598</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3598"/>
		<updated>2014-06-08T09:36:07Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3597</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3597"/>
		<updated>2014-06-08T09:34:57Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#people_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_Search_Resource_-_REST_API&amp;diff=3596</id>
		<title>stoney core: Search Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_Search_Resource_-_REST_API&amp;diff=3596"/>
		<updated>2014-06-08T09:33:07Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: Undo revision 3595 by Chrigu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: Search Resource Mapping (REST - LDAP)]] and [[stoney core: Global Searches]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The search resource provides a full text search over all the available resources. The available resources are:&lt;br /&gt;
* The main framework called [[:Category:stoney core|stoney core]] is responsible for shared functionality.&lt;br /&gt;
* The [[:Category:Self-Service Modules|Self-Service Modules]] expand the initial stoney cloud functionality.&lt;br /&gt;
&lt;br /&gt;
A search could look as follows:&lt;br /&gt;
* &amp;lt;code&amp;gt;https://api.example.com/v1/search?q=fluffy+dragon&amp;amp;entries=15&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following rules apply:&lt;br /&gt;
* The minimum number of characters for the query are 3.&lt;br /&gt;
* Number of entries returned &#039;&#039;&#039;per&#039;&#039;&#039; object type:&lt;br /&gt;
** Default: 5&lt;br /&gt;
** Maximum: 15 (can be raised by &#039;&#039;&#039;entries&#039;&#039;&#039; get parameter)&lt;br /&gt;
* The attributes returned for each individual resource are presently the same as when querying the corresponding resource collection.&lt;br /&gt;
&lt;br /&gt;
= stoney core: search resource methods =&lt;br /&gt;
As described above, each resource has its own search methods. The current stoney core resources are:&lt;br /&gt;
* [[stoney core: Resellers Resource - REST API]]&lt;br /&gt;
* [[stoney core: Customers Resource - REST API]]&lt;br /&gt;
* [[stoney core: People Resource - REST API]]&lt;br /&gt;
&lt;br /&gt;
The following special resources don&#039;t have additional search methods:&lt;br /&gt;
* [[stoney core: Authentication Resource - REST API]]&lt;br /&gt;
&lt;br /&gt;
== Global Search (GET) ==&lt;br /&gt;
Also visit [[stoney core: Search Resource Mapping (REST - LDAP)]] and [[stoney core: Global Searches]].&lt;br /&gt;
&lt;br /&gt;
To form a global fulltext search (over all resources), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/search?q=example&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Global Search Request Message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/search?q=example HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Global Search Response Message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#global_search_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Global Search Response Message Body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;global_search_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Global Search Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|ôbject&lt;br /&gt;
|no&lt;br /&gt;
| An object containing an array with one or more resource collection objects. See [[stoney_core:_Resellers_Resource_-_REST_API#reseller_collection_array_element_object | Reseller Collection Array Element Object]] for a concrete example.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;resellers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller No 2 Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;8004&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Zürich&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;customers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: false,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Peter Example&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000001&lt;br /&gt;
       }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;people&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Peter&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Thomas&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Global Search Response Object (stoney core: Resellers Resource) ==&lt;br /&gt;
The logic is described on the [[stoney core: Search Resource Mapping (REST - LDAP)]] page under the chapter [[stoney_core:_Search_Resource_Mapping_(REST_-_LDAP)#Global_Search_Response_Object_.28stoney_core:_Resellers_Resource.29 | Global Search Response Object (stoney core: Resellers Resource)]].&lt;br /&gt;
&lt;br /&gt;
Resource collection object for the stoney core: Resellers Resource.&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
  &amp;quot;resellers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller No 2 Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;8004&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Zürich&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Global Search Response Object (stoney core: Customers Resource) ==&lt;br /&gt;
The logic is described on the [[stoney core: Search Resource Mapping (REST - LDAP)]] page under the chapter [[stoney_core:_Search_Resource_Mapping_(REST_-_LDAP)#Global_Search_Response_Object_.28stoney_core:_Customers_Resource.29 | Global Search Response Object (stoney core: Customers Resource)]].&lt;br /&gt;
&lt;br /&gt;
Resource collection object for the stoney core: Customers Resource.&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
  &amp;quot;customers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: false,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Peter Example&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000001&lt;br /&gt;
       }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Global Search Response Object (stoney core: People Resource) ==&lt;br /&gt;
The logic is described on the [[stoney core: Search Resource Mapping (REST - LDAP)]] page under the chapter [[stoney_core:_Search_Resource_Mapping_(REST_-_LDAP)#Global_Search_Response_Object_.28stoney_core:_People_Resource.29 | Global Search Response Object (stoney core: People Resource)]].&lt;br /&gt;
&lt;br /&gt;
Resource collection object for the stoney core: People Resource.&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
  &amp;quot;people&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Peter&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Thomas&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_Search_Resource_-_REST_API&amp;diff=3595</id>
		<title>stoney core: Search Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_Search_Resource_-_REST_API&amp;diff=3595"/>
		<updated>2014-06-08T09:31:12Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Global Search Response Message Body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: Search Resource Mapping (REST - LDAP)]] and [[stoney core: Global Searches]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The search resource provides a full text search over all the available resources. The available resources are:&lt;br /&gt;
* The main framework called [[:Category:stoney core|stoney core]] is responsible for shared functionality.&lt;br /&gt;
* The [[:Category:Self-Service Modules|Self-Service Modules]] expand the initial stoney cloud functionality.&lt;br /&gt;
&lt;br /&gt;
A search could look as follows:&lt;br /&gt;
* &amp;lt;code&amp;gt;https://api.example.com/v1/search?q=fluffy+dragon&amp;amp;entries=15&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following rules apply:&lt;br /&gt;
* The minimum number of characters for the query are 3.&lt;br /&gt;
* Number of entries returned &#039;&#039;&#039;per&#039;&#039;&#039; object type:&lt;br /&gt;
** Default: 5&lt;br /&gt;
** Maximum: 15 (can be raised by &#039;&#039;&#039;entries&#039;&#039;&#039; get parameter)&lt;br /&gt;
* The attributes returned for each individual resource are presently the same as when querying the corresponding resource collection.&lt;br /&gt;
&lt;br /&gt;
= stoney core: search resource methods =&lt;br /&gt;
As described above, each resource has its own search methods. The current stoney core resources are:&lt;br /&gt;
* [[stoney core: Resellers Resource - REST API]]&lt;br /&gt;
* [[stoney core: Customers Resource - REST API]]&lt;br /&gt;
* [[stoney core: People Resource - REST API]]&lt;br /&gt;
&lt;br /&gt;
The following special resources don&#039;t have additional search methods:&lt;br /&gt;
* [[stoney core: Authentication Resource - REST API]]&lt;br /&gt;
&lt;br /&gt;
== Global Search (GET) ==&lt;br /&gt;
Also visit [[stoney core: Search Resource Mapping (REST - LDAP)]] and [[stoney core: Global Searches]].&lt;br /&gt;
&lt;br /&gt;
To form a global fulltext search (over all resources), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/search?q=example&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Global Search Request Message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/search?q=example HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Global Search Response Message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#global_search_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Global Search Response Message Body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;global_search_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Global Search Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|ôbject&lt;br /&gt;
|no&lt;br /&gt;
| An object containing an array with one or more resource collection objects. See [[stoney_core:_Resellers_Resource_-_REST_API#reseller_collection_array_element_object | Reseller Collection Array Element Object]] for a concrete example.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;resellers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller No 2 Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;8004&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Zürich&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;customers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: false,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Peter Example&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000001&lt;br /&gt;
       }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;people&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Peter&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Thomas&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Global Search Response Object (stoney core: Resellers Resource) ==&lt;br /&gt;
The logic is described on the [[stoney core: Search Resource Mapping (REST - LDAP)]] page under the chapter [[stoney_core:_Search_Resource_Mapping_(REST_-_LDAP)#Global_Search_Response_Object_.28stoney_core:_Resellers_Resource.29 | Global Search Response Object (stoney core: Resellers Resource)]].&lt;br /&gt;
&lt;br /&gt;
Resource collection object for the stoney core: Resellers Resource.&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
  &amp;quot;resellers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 4000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/4000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;resellerName&amp;quot;: &amp;quot;Example Reseller No 2 Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;8004&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Zürich&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/resellers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Global Search Response Object (stoney core: Customers Resource) ==&lt;br /&gt;
The logic is described on the [[stoney core: Search Resource Mapping (REST - LDAP)]] page under the chapter [[stoney_core:_Search_Resource_Mapping_(REST_-_LDAP)#Global_Search_Response_Object_.28stoney_core:_Customers_Resource.29 | Global Search Response Object (stoney core: Customers Resource)]].&lt;br /&gt;
&lt;br /&gt;
Resource collection object for the stoney core: Customers Resource.&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
  &amp;quot;customers&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 5000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/5000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isCompany&amp;quot;: false,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Peter Example&amp;quot;       &lt;br /&gt;
        &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
        &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
        &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000001&lt;br /&gt;
       }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/customers/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Global Search Response Object (stoney core: People Resource) ==&lt;br /&gt;
The logic is described on the [[stoney core: Search Resource Mapping (REST - LDAP)]] page under the chapter [[stoney_core:_Search_Resource_Mapping_(REST_-_LDAP)#Global_Search_Response_Object_.28stoney_core:_People_Resource.29 | Global Search Response Object (stoney core: People Resource)]].&lt;br /&gt;
&lt;br /&gt;
Resource collection object for the stoney core: People Resource.&lt;br /&gt;
&amp;lt;source lang=&#039;javascript&#039;&amp;gt;&lt;br /&gt;
  &amp;quot;people&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;resources&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000000,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000000&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Peter&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
      { &amp;quot;id&amp;quot;: 6000001,&lt;br /&gt;
        &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/6000001&amp;quot;,&lt;br /&gt;
        &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
        &amp;quot;givenName&amp;quot;: &amp;quot;Thomas&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot;: &amp;quot;Example&amp;quot;&lt;br /&gt;
        &amp;quot;customerName&amp;quot;: &amp;quot;Example Customer Ltd&amp;quot;,&lt;br /&gt;
        &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
        &amp;quot;belongsToCustomerID&amp;quot;: 5000000&lt;br /&gt;
       },&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/?q=example&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3594</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3594"/>
		<updated>2014-06-08T09:24:59Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;people_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|People Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3593</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3593"/>
		<updated>2014-06-08T09:23:58Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, &amp;quot;user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerId&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerId&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3592</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3592"/>
		<updated>2014-06-08T09:23:31Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People collection retrieval response message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;surname&amp;quot;, &amp;quot;Surname&amp;quot;,&lt;br /&gt;
    &amp;quot;mail&amp;quot;, user@example.com&amp;quot;,&lt;br /&gt;
    &amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001,&lt;br /&gt;
    &amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
      4000002,&lt;br /&gt;
      4001003,&lt;br /&gt;
      4002004&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3591</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3591"/>
		<updated>2014-06-08T09:15:25Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3590</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3590"/>
		<updated>2014-06-08T09:14:23Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerId&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfId&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfId&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalId&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalId&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3589</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3589"/>
		<updated>2014-06-08T09:11:39Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* People retrieval (GET) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalID&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== People collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== People collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3588</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3588"/>
		<updated>2014-06-08T09:06:36Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Search (with filter) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalID&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;surname&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?surname=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3587</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3587"/>
		<updated>2014-06-08T09:05:48Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Sort */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalID&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=surname,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3586</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3586"/>
		<updated>2014-06-08T09:03:46Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person retrieval (GET) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalID&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== People retrieval (GET) ==&lt;br /&gt;
=== People collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3585</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3585"/>
		<updated>2014-06-05T15:12:22Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|The ID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;externalID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|no&lt;br /&gt;
|The ID of a reference in an external database.&lt;br /&gt;
|Min 0, max 1e+32&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;externalID&amp;quot;: 987654321&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3584</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3584"/>
		<updated>2014-06-05T15:04:47Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfUID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|yes&lt;br /&gt;
|The UID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;employeeOfUID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3583</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3583"/>
		<updated>2014-06-05T15:04:03Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employeeOfUID&amp;lt;/code&amp;gt;&lt;br /&gt;
|array&lt;br /&gt;
|yes&lt;br /&gt;
|The UID(s) the person is an employee of. The UID(s) can belong to one or more [[stoney_core:_Resellers_Resource_-_REST_API|resellers]] or also to one or more [[stoney_core:_Customers_Resource_-_REST_API|customers]]&lt;br /&gt;
|one ore more UID as integer&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
employeeOfUID&amp;quot;: [&lt;br /&gt;
  4000002,&lt;br /&gt;
  4001003,&lt;br /&gt;
  4002004&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3582</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3582"/>
		<updated>2014-06-05T14:51:52Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3581</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3581"/>
		<updated>2014-06-05T14:50:41Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3580</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3580"/>
		<updated>2014-06-05T14:50:20Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset|offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;belongsToCustomerID&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3579</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3579"/>
		<updated>2014-06-05T14:49:16Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [http://en.wikipedia.org/wiki/UTC_offset|offset from UTC].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|the [[stoney_core:_Customers_Resource_-_REST_API|customer]] UID the person belongs to&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3578</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3578"/>
		<updated>2014-06-05T14:29:43Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [[http://en.wikipedia.org/wiki/UTC_offset|offset from UTC]].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3577</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3577"/>
		<updated>2014-06-05T14:27:11Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;-&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sstTimeZoneOffset&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [[http://en.wikipedia.org/wiki/UTC_offset|offset from UTC]].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3576</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3576"/>
		<updated>2014-06-05T14:25:54Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;gt;-&amp;lt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sstTimeZoneOffset&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;timeZoneOffset&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Time zone as an [[http://en.wikipedia.org/wiki/UTC_offset|offset from UTC]].&lt;br /&gt;
|Offset from UTC in the form &amp;lt;code&amp;gt;UTC±[hh]:[mm]&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;timeZoneOffset&amp;quot;: &amp;quot;UTC+01:00&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
	<entry>
		<id>https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3572</id>
		<title>stoney core: People Resource - REST API</title>
		<link rel="alternate" type="text/html" href="https://wiki.stoney-cloud.org/w/index.php?title=stoney_core:_People_Resource_-_REST_API&amp;diff=3572"/>
		<updated>2014-06-04T15:09:28Z</updated>

		<summary type="html">&lt;p&gt;Chrigu: /* Person creation request message body */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also visit [[stoney core: People Resource Mapping (REST - LDAP)]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The REST API describes the (&#039;&#039;&#039;Re&#039;&#039;&#039;presentational &#039;&#039;&#039;S&#039;&#039;&#039;tate &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;P&#039;&#039;&#039;rogramming &#039;&#039;&#039;I&#039;&#039;&#039;nterface) of the people resource to be used by [[:Category:stoney core|stoney core]], [[:Category:stoney conductor|stoney conductor]] and other [[:Category:Self-Service Modules|Self-Service Modules]] or third party applications.&lt;br /&gt;
&lt;br /&gt;
Basically, we want to be able to do the following things:&lt;br /&gt;
* Create a new person (POST).&lt;br /&gt;
* Retrieve multiple people in the form of a list (GET).&lt;br /&gt;
* Retrieve a single person (GET).&lt;br /&gt;
* Update an existing person (PUT).&lt;br /&gt;
* Update one or more values of an existing person (PATCH).&lt;br /&gt;
* Delete a single person (DELETE).&lt;br /&gt;
&lt;br /&gt;
To get an idea what happens behind the screens, have a look at the [[stoney core: People Resource Mapping (REST - LDAP)]] documentation located in the [[:Category:Mapping (REST - LDAP)|Mapping (REST - LDAP)]] category.&lt;br /&gt;
&lt;br /&gt;
= People resource methods =&lt;br /&gt;
== Person creation (POST) ==&lt;br /&gt;
To create a new person the client needs to send a HTTP &amp;lt;code&amp;gt;POST&amp;lt;/code&amp;gt; request on the people collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt; (also see [[Application_Programming_Interface_(API)#Base_URI|Base URI]]), including the associated person informations.&lt;br /&gt;
The service will generate a new person and responds with a HTTP status code &amp;lt;code&amp;gt;201&amp;lt;/code&amp;gt; (Created) on success. The newly created person URI is returned within the HTTP location header, which can be used by the client to gather further information about the new person.&lt;br /&gt;
&lt;br /&gt;
=== Person creation request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation request message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The title of a person. &lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;title&amp;quot;: &amp;quot;CEO&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|no&lt;br /&gt;
|Is the entry active&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Language tag&lt;br /&gt;
|&amp;lt;[http://www.loc.gov/standards/iso639-2/php/code_list.php ISO 639-1 Code]&amp;gt;-&amp;lt;[http://www.iso.org/iso/english_country_names_and_code_elements ISO 3166-1-alpha-2 code]&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;de-CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Password&lt;br /&gt;
|min 8 chars, max 255 chars&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;password&amp;quot;: &amp;quot;dontstealme!&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Email address&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;user@example.com&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Telephone number&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|Mobile telephone&lt;br /&gt;
|Phone number according to [http://en.wikipedia.org/wiki/E.164 E.164] (international dialling code, trunk code, area code, subscriber line).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 11 222 33 44&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the newly created person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000002&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;billingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|billingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|UTF-8 {64}&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|UTF-8 {64} &lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;shippingAddress_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|shippingAddress Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|no&lt;br /&gt;
|The name of the organization.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;gender&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The gender of the address holder&lt;br /&gt;
|Either &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female, &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; for male or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neutral.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;gender&amp;quot;: &amp;quot;f&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The given name (first name or forename) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The surname (last name or family name) of the address holder.&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalAddress&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalAddress&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;preferredLanguage&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;preferredLanguage&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mail&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mail&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;telephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;telephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;mobileTelephoneNumber&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;websiteURL&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;websiteURL&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person creation response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 201 Created&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_creation_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person creation response message body ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_creation_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Creation Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the newly created person resource.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the newly created person resource, corresponds with the HTTP location header.&lt;br /&gt;
|@TODO add link to URI RFC&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person retrieval (GET) ==&lt;br /&gt;
=== Person collection retrieval (GET) ===&lt;br /&gt;
To retrieve existing people, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s collection resource URI &amp;lt;code&amp;gt;https://api.example.com/v1/people&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the various people.&lt;br /&gt;
&lt;br /&gt;
Note that the service will only return a limited amount of objects at once and provides links for retrieving further objects. Refer to the [[stoney_core:_REST_API#Pagination|Pagination chapter]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== Sort ====&lt;br /&gt;
If you don&#039;t add a sort attribute, the collection will be sorted by &#039;&#039;&#039;id&#039;&#039;&#039; (ascending). If you would like a sorted collection answer, the query parameter sort must be added with the object&#039;s sort attribute(s) as the value: &amp;lt;code&amp;gt;https://api.example.com/v1/people?sort=personName,isActive&amp;lt;/code&amp;gt;. For further information on filtering, sorting and searching, visit [[stoney_core:_REST_API#Filtering.2C_sorting_and_searching | stoney core: REST API]].&lt;br /&gt;
&lt;br /&gt;
==== Search (fulltext) ====&lt;br /&gt;
To form a fulltext search (people only), append the url query parameter &#039;&#039;&#039;q&#039;&#039;&#039; with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?q=example&amp;lt;/code&amp;gt;. The document [[stoney_core:_Search_Resource_-_REST_API#People_Search_.28GET.29 | stoney core: Search Resource - REST API]] describes the search in detail.&lt;br /&gt;
&lt;br /&gt;
==== Search (with filter) ====&lt;br /&gt;
To form a specific search, append the url query attribute(s) name (for example &#039;&#039;&#039;personName&#039;&#039;&#039;) with the desired search text: &amp;lt;code&amp;gt;https://api.example.com/v1/people?personName=example&amp;lt;/code&amp;gt;. You&#039;re allowed to search for all attributes that are returned in the [[#Person_element_retrieval_response_message_body | Person element retrieval response message body]].&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/ HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person collection retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
Link:&lt;br /&gt;
X-Total-Count:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Link: &amp;lt;https://api.example.com/v1/people?page=1&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;first&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=2&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;prev&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=4&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;next&amp;quot;,&lt;br /&gt;
  &amp;lt;https://api.example.com/v1/people?page=10&amp;amp;per_page=30&amp;gt;; rel=&amp;quot;last&amp;quot;&lt;br /&gt;
X-Total-Count: 295&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#person_collection_retrieval_response_object|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person collection retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_retrieval_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Retrieval Response Object&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|array&lt;br /&gt;
|no&lt;br /&gt;
|An array with one or more [[#person_collection_array_element_object|person collection objects]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 5000000,&lt;br /&gt;
    &amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;,&lt;br /&gt;
    &amp;quot;isCompany&amp;quot;: true,&lt;br /&gt;
    &amp;quot;isActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&lt;br /&gt;
    &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
    &amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;,&lt;br /&gt;
    &amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;quot;,&lt;br /&gt;
    &amp;quot;belongsToResellerID&amp;quot;: 4000000,&lt;br /&gt;
    &amp;quot;belongsToCustomerID&amp;quot;: 4000001&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    /* ... */&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;error { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_collection_array_element_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Collection Array Element Object&lt;br /&gt;
!Parameter name&lt;br /&gt;
!Data type&lt;br /&gt;
!Mandatory&lt;br /&gt;
!Description&lt;br /&gt;
!Valid content&lt;br /&gt;
![http://www.pcre.org/ PCRE]&lt;br /&gt;
!Default value&lt;br /&gt;
!Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;location&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Person Ltd&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;3012&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;Bern&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToResellerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The reseller identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;belongsToCustomerID&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The customer identification number the person resource must belong to.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 4000000&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person element retrieval (GET) ===&lt;br /&gt;
To retrieve an existing person and fetch the informations associated with it, the client needs to send a HTTP &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;.&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns the associated person informations.&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval request message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person element retrieval response message ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
Location: &amp;lt;Location-URI&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
Location: https://api.example.com/v1/people/5000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_element_retrieval_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Person element retrieval response message body ======&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot; id=&amp;quot;person_element_retrival_response_object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ align=&amp;quot;top&amp;quot; style=&amp;quot;text-align:left;&amp;quot;|Person Element Retrieval Response Object &lt;br /&gt;
! Parameter name&lt;br /&gt;
! Data type&lt;br /&gt;
! Mandatory&lt;br /&gt;
! Description&lt;br /&gt;
! Valid content&lt;br /&gt;
! [http://www.pcre.org/ PCRE]&lt;br /&gt;
! Default value&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;&lt;br /&gt;
|integer&lt;br /&gt;
|yes&lt;br /&gt;
|The identification number of the person.&lt;br /&gt;
|&lt;br /&gt;
|@TODO add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;id&amp;quot;: 5000001&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isCompany&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the person represents a company, &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if it&#039;s an individual person.&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isCompany&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;isActive&amp;lt;/code&amp;gt;&lt;br /&gt;
|boolean&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;isActive&amp;quot;: true&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;personName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The person&#039;s display name. Mostly the same as the &amp;lt;code&amp;gt;organizationName&amp;lt;/code&amp;gt; or the &amp;lt;code&amp;gt;givenName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;surname&amp;lt;/code&amp;gt; out of the [[#billingAddress_object|billingAddress object]], but can also be the name of a brand.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;personName&amp;quot;: &amp;quot;Super-duper Hosting&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;countryCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;countryCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;postalCode&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;postalCode&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;localityName&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|@TODO: Add regex&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;localityName&amp;quot;: &amp;quot;&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#billingAddress_object|&amp;lt;code&amp;gt;billingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|yes&lt;br /&gt;
|An object holding the billing address informations for the given person. Refer to the [[#billingAddress_object|billingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;billingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[#shippingAddress_object|&amp;lt;code&amp;gt;shippingAddress&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|An object holding the shipping address informations for the given person. Refer to the [[#shippingAddress_object|shippingAddress object table]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;shippingAddress&amp;quot;:&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;organizationName&amp;quot;: &amp;quot;Person Ltd.&amp;quot;,&lt;br /&gt;
  &amp;quot;gender&amp;quot;: &#039;m&#039;,&lt;br /&gt;
  &amp;quot;givenName&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
  &amp;quot;surname&amp;quot;: &amp;quot;Surname&amp;quot;,&lt;br /&gt;
  &amp;quot;postalAddress&amp;quot;: &amp;quot;Street Number&amp;quot;,&lt;br /&gt;
  &amp;quot;countryCode&amp;quot;: &amp;quot;CH&amp;quot;,&lt;br /&gt;
  &amp;quot;postalCode&amp;quot;: &amp;quot;1234&amp;quot;,&lt;br /&gt;
  &amp;quot;localityName&amp;quot;: &amp;quot;Locality&amp;quot;,&lt;br /&gt;
  &amp;quot;preferredLanguage&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
  &amp;quot;mail&amp;quot;: &amp;quot;name.surname@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;telephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;mobileTelephoneNumber&amp;quot;: &amp;quot;+41 00 000 00 00&amp;quot;,&lt;br /&gt;
  &amp;quot;websiteURL&amp;quot;: &amp;quot;https://www.example.com/&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;people&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the people belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;people&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/people&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;employees&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the employees belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;employees&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/employees&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;users&amp;lt;/code&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|yes&lt;br /&gt;
|The location URI of the users belonging to this person resource.&lt;br /&gt;
|@TODO add link to URI RFC &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;users&amp;quot;: &amp;quot;https://api.example.com/v1/people/5000001/users&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[stoney_core:_REST_API#Error_codes_and_responses|&amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|object&lt;br /&gt;
|no&lt;br /&gt;
|In case of a failure, an error object with the appropriate error messages will be returned. Refer to the [[stoney_core:_REST_API#Error_codes_and_responses|Error codes and response chapter]] for more informations.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;quot;error&amp;quot;: { /* ... */  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Person update (PUT) ==&lt;br /&gt;
To updates an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). &lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; method requires one to sent the complete record, thus the work-flow is normally as follows:&lt;br /&gt;
# A [[#Person_element_retrieval_.28GET.29|GET]] request on the Person element URI will be made to fetch the whole document.&lt;br /&gt;
# Update the fields which content has changed&lt;br /&gt;
# Send a &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; request with all the person data&lt;br /&gt;
&lt;br /&gt;
=== Person update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update request message body ====&lt;br /&gt;
See [[#person_object|Person object]].&lt;br /&gt;
&lt;br /&gt;
=== Person update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person partly update (PATCH) ==&lt;br /&gt;
To update fields of an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;PATCH&amp;lt;/code&amp;gt; request on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;).&lt;br /&gt;
The service responds with a HTTP status code 200 (OK) on success and returns an empty body. &lt;br /&gt;
&lt;br /&gt;
In contrast to the [[#Person_update_.28PUT.29|&amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt;]] method, only the changed fields are to be included in the request.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_update_request_message_body|Request body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update request message body ====&lt;br /&gt;
The JSON message body consists out of one or more fields from the [[#person_object|Person object]].&lt;br /&gt;
@TODO: Add example.&lt;br /&gt;
&lt;br /&gt;
=== Person partly update response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person partly update response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== Person deletion (DELETE) ==&lt;br /&gt;
To delete an existing person, the client needs to send a HTTP &amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt; request, with an empty request body on the person&#039;s element resource URI (such as, &amp;lt;code&amp;gt;https://api.example.com/v1/people/5000001&amp;lt;/code&amp;gt;). The service responds with a HTTP status code &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt; (OK) on success and returns an empty body.&lt;br /&gt;
&lt;br /&gt;
=== Person deletion request message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP request part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request lines&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE &amp;lt;Request-URI&amp;gt; HTTP 1.1&lt;br /&gt;
HOST: &amp;lt;Host&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/people/5000001 HTTP 1.1&lt;br /&gt;
HOST: api.example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request headers&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;&lt;br /&gt;
Accept-Charset: &amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
Accept: application/json&lt;br /&gt;
Accept-Charset: UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Request body&lt;br /&gt;
| &amp;lt;Empty&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Person deletion response message ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! HTTP response part&lt;br /&gt;
! Content&lt;br /&gt;
! Example&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Status Line&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 &amp;lt;HTTP-Status-Code&amp;gt; &amp;lt;HTTP-Status-Message&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
| &amp;lt;pre&amp;gt;HTTP/1.1 200 OK&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Response headers&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: &amp;lt;Type&amp;gt;/&amp;lt;Subtype&amp;gt;; charset=&amp;lt;Charset&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
Content-Type: Content-Type: application/json; charset=UTF-8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[#Person_partly_update_response_message_body|Response body]]&lt;br /&gt;
| JSON object&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{ ... }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Person deletion response message body ====&lt;br /&gt;
On success (&amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;) an empty response message body will be returned, otherwise an [[stoney_core:_REST_API#Error_codes_and_responses|error object]] will provide further informations about the failure.&lt;br /&gt;
&lt;br /&gt;
== People search ==&lt;br /&gt;
The people search is a sub section of the [[stoney core: Search Resource - REST API]] and is described there in more detail.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [[stoney core: REST API]]&lt;br /&gt;
&lt;br /&gt;
[[Category:REST API]][[Category:stoney core]]&lt;/div&gt;</summary>
		<author><name>Chrigu</name></author>
	</entry>
</feed>