[[TOC]] [wiki:S3XRC] | S3XML | [wiki:S3XRC/RESTfulAPI S3 RESTful API] = S3XML - XML/JSON Format = == XML Format == {{{ created_on="2009-10-02 08:55:11" <-- date/time when the record was created --> modified_on="2009-10-02 08:56:03" <-- date/time when the record was last modified --> uuid="6e6e76dc-8ed7-408c-bb09-54476e3944ae" <-- UUID of the record (if present in DB) --> created_by="None" <-- Author --> modified_by="Dominic" <-- Last Author --> name="pr_person"> <-- Resource Name --> field="pr_pe_id" <-- Field name --> resource="pr_pentity" <-- Name of the referenced resource --> uuid="6e6e76dc-8ed7-408c-bb09-54476e3944ae"/> <-- UUID of the referenced entry --> 730421 <-- A field in the record --> Dominic König male Adult (21-50) dominic@nursix.org 1973-04-21 Germany Sweden none married Nurse created_on="2009-10-02 11:34:34" modified_on="2009-10-02 11:34:34" uuid="89217054-3c10-4f5d-959a-420254243498" name="pr_address"> value="1"> <-- original value in the database --> Home Address <-- value represented for human readability --> Lundgatan 38031 Läckeby Sweden 56.78042 16.27914 }}} * [wiki:UUID] - how we handle Unique IDs for records across heterogeneous systems == JSON Format == The data structure of the JSON format is equivalent to the XML format (=element trees) - except that markup elements are represented by prefixes: {{{ { "@domain": "yana", // Server name "@url": "http://127.0.0.1:8000/eden" // Server URL "$_pr_person": { // Resource, prefix: $_ "@uuid": "44fc762e-02df-44e0-8bd1-9b58e3132894", // Resource attribute, prefix: @ "@url": "http://127.0.0.1:8000/eden/pr/person/1", "@created_on": "2009-11-16 22:33:35", "@created_by": "None", "@modified_on": "2009-11-19 21:32:19", "@modified_by": "Dominic", "first_name": "Dominic", // Data field, no prefix "last_name": "K\u00f6nig", "email": "dominic@nursix.org", "opt_pr_age_group": {"@value": "1", "$": "unknown"}, // Data field with textual representation: "opt_pr_religion": {"@value": "1", "$": "none"}, // @value=Value, $=TextualRepresentation "opt_pr_gender": {"@value": "1", "$": "unknown"}, "opt_pr_nationality": {"@value": "999", "$": "unknown"}, "opt_pr_country": {"@value": "999", "$": "unknown"}, "opt_pr_marital_status": {"@value": "1", "$": "unknown"}, "$k_pr_pe_id": { // External Reference (Key), prefix: $k_ "@resource": "pr_pentity", // Key resource name "@uuid": "a2a945bd-4f43-41da-bcdb-e2e638a987ea", // UUID of the key record "$": "Dominic K\u00f6nig [no label] (Person)" // Textual representation of the reference }, "$_pr_presence": { // Joined Resource (Component): "@uuid": "14af2751-7277-4e90-b42b-0d0430684561", // appears as component within the resource "@created_on": "2009-11-19 19:42:46", "@modified_on": "2009-11-19 19:42:46" "@url": "http://127.0.0.1:8000/eden/pr/person/1/presence/1", "opt_pr_presence_condition": {"@value": "4", "$": "Found"}, "time": {"@value": "2009-11-19 18:42:00 +0000", "$": "2009-11-19 20:42:00"}, "$k_reporter": { "@resource": "pr_person", "@uuid": "44fc762e-02df-44e0-8bd1-9b58e3132894", "$": "Dominic K\u00f6nig" }, } }, } }}} '''JSON format characteristics:''' * The JSON output contains _no_ whitespace between elements, it's just added here by hand for better readability * The outermost structure is always a JSON object (not a list) * All data is represented as strings (for security reasons) * If @value is sent for a field, it overrides the element text ($) at import * however, the use of @value is not mandatory, data can simply be placed instead of element text * Note that there is no automatic data encoding: data must be sent in DB-encoded format * @resource, @name and @uuid attributes are mandatory at input, other attributes can be omitted * Multiple records of the same resource will be aggregated as lists like: {{{ { $_my_resource: [ { // record1 of my_resource } { // record2 of my_resource } ] } }}} ---- DeveloperGuidelines