Participants
------------
(((ECSA,overview)))
A particpant represents a legal client in an ECSA network.

///////////
[[participant_basic_requirements]]
///////////

Basic functionalities and requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Technology / Architecture
^^^^^^^^^^^^^^^^^^^^^^^^^
(((participant,technology)))
(((participant,architecture)))

- has to communicate with the ECS as a
ifdef::hyperdoc[{rest_home_lnk}[REST]]
ifndef::hyperdoc[REST footnote:[REST Homepage see {rest_home_txt}]]
  client.
ifdef::hyperdoc[- {http_1_1_lnk}[HTTP 1.1]]
ifndef::hyperdoc[- HTTP 1.1 footnote:[HTTP 1.1 see {http_1_1_txt}]]
  as transport and application protocol
- provide persistent connection (keep-alive)
- provide SSL/TLS transport layer
- has to use
ifdef::hyperdoc[{utf_8_lnk}[UTF-8]]
ifndef::hyperdoc[UTF-8 footnote:[UTF-8 see {utf_8_lnk_txt}]]

Authentication
^^^^^^^^^^^^^^
(((participant,authentication)))

ifdef::hyperdoc[- {http_basic_auth_lnk}[HTTP Basic auth]]
ifndef::hyperdoc[- HTTP Basic auth footnote:[HTTP Basic auth see {http_basic_auth_txt}]]
- X.509 Certificates (SSL/TLS client authentication)

Authorization
~~~~~~~~~~~~~
(((participant,authorization)))

A client should be able to use a simple "one touch token" authorization through
the ECS `sys/auths` resource. This token could be used to accomplish deligated
authorization for accessing resources on participants of a common ECSA network.
E.g. in redirecting users clicking on course links or in
ifdef::hyperdoc[<<_direct_participant_to_participant_communication,direct communicating of participants>>.]
ifndef::hyperdoc[direct communicating of participants (see <<_direct_participant_to_participant_communication>>).]

//////////////////////////////////
ECS REST interface
~~~~~~~~~~~~~~~~~~
//////////////////////////////////

Ressource extensions / alterations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(((participant,ressource extensions)))

To make resource extensions and alteration possible the clients have to
easily permit

- additional ressources
- extensible data formats
- Postels's Law (robustness principle): _Be conservative in what you send; be liberal in what you accept._
- versioning through request and response header (content negotiation)
 * Accept: application/vnd.my-format.v1+json
 * Accept: application/vnd.my-format.v2+json

