# feature definition A feature represents a location. It has index _fid_. It has two dimensions: _lagitude_ and _longitude_. It may have an image represented by it's url. This field is called _imgurl_; it may also have a _title_ and/or a _description_. # client to server communication: Client submits a classic html form to server. **note**: In this documentation, php notation is used (`_POST` and `_FILES`), but server may be written in any language. ` _POST["password"]` may contains user password. If it is set, access is checked. If it is not set, authentification cookie is checked. If neither are present, or if one of them is wrong, access is denied. `_POST["request"]` is either: ## auth asks for authentication ## add adds a new feature * `_POST["lon"]` must contain feature longitude * `_POST["lat"]` must contain feature latitude * `_POST["title"]` may contain feature title * `_POST["description"]` may contain feature description * `_FILES["image_file"]` may contain an uploaded image ## del to delete an existing feature * `_POST["fid"]` must contain feature id ## update to modify an existing feature * `_POST["fid"]` must contain feature id * `_POST["lon"]` must contain feature longitude * `_POST["lat"]` must contain feature latitude * `_POST["title"]` may contain feature title * `_POST["description"]` may contain feature description if `_POST["keep_img"]` is "yes", feature image will not be modified. Otherwise, `_FILES["photo_file"]` is checked for an uploaded file. If `_FILES["photo_file"]` is empty, existing feature image will be deleted. Otherwise, uploaded file will replace current feature image. # server reply to client: Server replies with xml content. In an ideal world, reply would be just xml content. But due to technical issues, syp must wrap xml content in the body of a html document. So for example, instead of sending `` as _text/xml_, syp sends `` as _text/html_ ## error handling: reply is something like `` with _?reason?_ can be either: * `unauthorized`: user is not authorized to execute request, or authentication failed * `server`: an error occured on server side (such as database problem) * `request`: server could not understand request * `toobig`: uploaded file was too big * `notation`: uploaded file was not an image * `nochange`: when trying to update a feature, there is nothing to update (ie: no field of the feature has changed) ## success handling: * ``: authentication was successfull * ` ?id? `: deletion was successfull. _?id?_ was property of deleted feature * ` ?id? ?imgurl? ?description? ?heading? ?lon? ?lat? `: addition was successfull. _?id?_, _?imgurl?_, _?description?_, _?heading?_, _?lon?_, _?lat?_ are properties of added feature; * ` ?id? ?imgurl? ?description? ?heading? ?lon? ?lat? `: update was successfull. _?id?_, _?imgurl?_, _?description?_, _?heading?_, _?lon?_, _?lat?_ are properties of updated feature;