Seanox XMEX - XML-Micro-Exchange (Free Web Service)

The origin of the project is the desire for an easily accessible place for data exchange on the Internet. Inspired by JSON-Storages the idea of a feature-rich equivalent based on XML, XPath and XSLT was born. The focus should be on a public, volatile and short-term data exchange for (static) web-applications and IoT.

Just exchange data without an own server landscape.
Just exchange data without knowing and managing all clients.

XML-Micro-Exchange is a volatile NoSQL stateless micro datasource for the Internet. It is designed for easy communication and data exchange of web-applications and for IoT or for other Internet-based modules and components. The XML based datasource is volatile and lives through continuous use and expires through inactivity. They are designed for active and near real-time data exchange but not as a real-time capable long-term storage. Compared to a JSON storage, this datasource supports more dynamics, partial data access, data transformation, and volatile short-term storage.

Why all this?

In this communication are all participants.
No one is a server or master, all are equal and no one has to know the other.
All meet without obligation.

Features

API

HTTP is used. The URI typically contains a noticeable separator to divide it into context path and XPath. For the API only the XPath is relevant.

https://xmex.seanox.com/xmex!xpath(-function)
<-------------------------->|<-------------->
        Context Path              XPath
    

In some cases, the XPath syntax may not be supported as a URI by the client or provider. In these cases, the XPath can alternatively be used as Base64 or hexadecimal encoded. For this purpose, a question mark is expected after the last character of the context path and then the encoded string. The encoding method is determined automatically.

https://xmex.seanox.com/xmex!count(//items[@id<0])
https://xmex.seanox.com/xmex!count(%2F%2Fitems[@id<0])
https://xmex.seanox.com/xmex!?636F756E74282F2F6974656D735B4069643C305D29
https://xmex.seanox.com/xmex!?Y291bnQoLy9pdGVtc1tAaWQ8MF0p
    

If the method cannot be determined, the string is interpreted as an XPath (function) and because of the question mark at the beginning usually causes an invalid XPath error.

The request supports the following additional headers:

Request Header Description
Storage Storage identifier optional with name of the root element

Also the response has additional headers:

Response Header Description
Storage Storage identifier without the name of the root element
Storage-Revision Current revision of the storage (revision/changes)
Storage-Space Capacity of the storage (total/used in bytes)
Storage-Last-Modified Timestamp (RFC822) of the last access
Storage-Expiration Timestamp (RFC822) when the storage will expire
Storage-Expiration-Time Idle time in milliseconds until storage expires
Execution-Time Duration of request processing in milliseconds
Error Unique error number from the logging with status 500
Message Detailed error message with status 400 / 422

Notice about response code 404: This always refers to the storage file, but never to an addressed target in the storage. If a target does not exist, requests are responded to with code 204 or 304 for modifying requests.

Usage

  1. The storage must be opened by CONNECT or PUT without XPath. This can be done by any client, even if the storage already exists. Because CONNECT is not an HTTP standard, it is better to use PUT without XPath.

  2. The client should always proceed as if it were using storage alone and created the schema it needs. The creation of the schema is done with PUT. Relative and conditional axes should be used as targets. This ensures that no duplicates are created or data is overwritten.

    e.g. PUT /books[not(book[@title='A Modern Utopia'])]::last

    This approach made transactions unnecessary.

  3. Now the client can use the storage.

  4. Closing or terminating the storage is not possible and necessary. The storage expires automatically due to inactivity. The duration of use and expiration time of the storage is contained in the response in the headers Storage-Last-Modified, Storage-Expiration, Storage-Expiration-Time.

Free XML-Micro-Exchange

Before using, you must read, understand and agree to Terms of Service and Privacy Policy.

https://xmex.seanox.com/xmex!

65536 Storages x 64 kB
Please do not get confused, the API is online.
Requests without storage identifier are responded with status 400.

It is a small server (1 vCore, 1 GB, 10 RAM GB SSD) in a big datacenter -- but apparently enough.
Sponsors are always welcome.
It costs about 5 Euro per month for 1,000,000 storages x 64 kB with double CPU cores and double memory.

Documentation

Examples

Multiplayer Snake (Online) Sources

Open Source

About Seanox Software Solutions

Seanox Software Solutions was founded in 2000 as a non-commercial open-source recreational project and it is still that way today. It is pure passion for software development.