| Version 2 (modified by , 15 years ago) ( diff ) |
|---|
Table of Contents
S3XRC | S3XML
S3XML - XML/JSON Format
XML Format
<s3xrc>
<resource <-- a record in the database -->
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 -->
<reference <-- Reference Field (foreign key) in the record -->
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 -->
<data field="pr_pe_label">730421</data> <-- A field in the record -->
<data field="first_name">Dominic</data>
<data field="middle_name"/>
<data field="last_name">König</data>
<data field="preferred_name"/>
<data field="local_name"/>
<data field="opt_pr_gender" value="3">male</data>
<data field="opt_pr_age_group" value="5">Adult (21-50)</data>
<data field="email">dominic@nursix.org</data>
<data field="mobile_phone"/>
<data field="date_of_birth">1973-04-21</data>
<data field="opt_pr_nationality" value="65">Germany</data>
<data field="opt_pr_country" value="167">Sweden</data>
<data field="opt_pr_religion" value="1">none</data>
<data field="opt_pr_marital_status" value="3">married</data>
<data field="occupation">Nurse</data>
<data field="comment"/>
<resource <-- A sub-resource (joined resource) of the record -->
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">
<data
field="opt_pr_address_type" <-- field name -->
value="1"> <-- original value in the database -->
Home Address <-- value represented for human readability -->
</data>
<data field="co_name"/>
<data field="street1">Lundgatan</data>
<data field="street2"/>
<data field="postcode">38031</data>
<data field="city">Läckeby</data>
<data field="state"/>
<data field="opt_pr_country" value="167">Sweden</data>
<data field="lat">56.78042</data>
<data field="lon">16.27914</data>
<data field="comment"/>
</resource>
</resource>
</s3xrc>
- 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
}
]
}
Note:
See TracWiki
for help on using the wiki.

