Delphi framework for multi-tier REST/JSON HTTP/HTTPS application server development and ORM remoting.


v4.17 (September 18, 2020)

Version history

TMS XData can be simultaneously used on these frameworks:

TMS XData can be simultaneously used on these operating systems/browsers:

TMS XData can be simultaneously used on these IDE's:


Feature overview

  • Server based on REST/JSON architecture style
  • Easily accessible from different client platforms like .NET, Java, JavaScript, since it's REST/JSON based
  • Uses standard POST, GET, PUT and DELETE HTTP methods for data request and data modification operations
  • Partial update of objects (PATCH)
  • Full-featured query mechanism
  • Multi-Model design makes it easy to create multiple servers with different mapping, types and service operations
  • Service Operations allow adding custom business logic to your server using interfaces and methods
  • Well-defined JSON representation of resources including entities, associations, streams and proxies
  • Support for streams (blobs)
  • Several databases supported in back end: SQL Server, MySQL, PostgreSQL, Oracle, Firebird, etc.. (through TMS Aurelius)
  • Design based on standard OData protocol
Based on TMS Sparkle HTTP/HTPS server architecture, which provides:
  • HTTP(s) server based on Windows http.sys stack
  • Support for HTTP Secure (HTTPS)
  • Kernel-mode caching and kernel-mode request queuing (less overhead in context switching)
  • Multiple applications/process can share (respond) the same port (at different addresses)
  • Secure Sockets Layer (SSL) support in kernel-mode

Feature details

TMS XData is a full-featured Delphi framework that allows you to create HTTP/HTTPS servers that exposes TMS Aurelius objects through REST/JSON.

Example of an Aurelius class mapped:
  [Entity, Automapping]
  TCustomer = class
  strict private
    FId: integer;
    FName: string;
    FTitle: string;
    FBirthday: TDateTime;
    FCountry: TCountry;
    property Id: Integer read FId write FId;
    property Name: string read FName write FName;
    property Title: string read FTitle write FTitle;
    property Birthday: TDateTime read FDateTime write FDateTime;
    property Country: TCountry read FCountry write FCountry;
XData enables access via a simple HTTP GET:
GET /tms/xdata/Customer(3) HTTP/1.1
Host: server:2001
Example JSON representation of the customer object returned in the body of HTTP response:
  "$id": 1,
  "@xdata.type": "XData.Default.Customer",
  "Id": 3,
  "Name": "Maria Anders",
  "Title": "Sales Representative",
  "Birthday": "1980-05-20",
  "Country": null
Use a HTTP POST to create new objects, HTTP DELETE to remove objects, HTTP PUT or HTTP PATCH to update objects.

Example: Change the value of Title property of the customer resource:
PATCH /tms/xdata/Customer(1) HTTP/1.1
Host: server:2001
  "Title": "Marketing Manager" 
Easily perform queries on existing objects.

Example of retrieving customers with country name equal to "USA", ordered by customer's name:
GET /tms/xdata/Customer?$filter=Country/Name eq 'USA'&$orderby=Name&$top=10 HTTP/1.1
Host: server:2001
Server will return with a JSON array of objects containing all the filtered objects.

Query paging built-in to restrict the number of objects returned in each request.

Sample source Aurelius integrated full server-side logic using methods


BTW I am VERY happy with XDATA in a project I am developing at the moment. Great way to develop distributed applications.

Roland Kossow, via email

After trying some REST frameworks, my last choice is to use XData! It's really a great framework, very flexible and powerful! TMS Business is a subscription that every serious Delphi developer should have in his toolbox!

Piffer Claudio, via TMS forum



for Delphi XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney (Prof/Enterprise/Architect)

View licensing FAQ
  • License for commercial use: Single developer license, Small team license, Site license
  • Includes full source code
  • Free 1 year updates and new releases
  • After 1 year, a 70% discount renewal is offered for a one year extension (offer valid for 30 days)
  • Free priority support through email and forum

Single developer license

license for 1 developer € 395

order now
add to cart

Small team license

license for 2 developers € 595

order now
add to cart

Site license

unlimited developers in the company € 1355

order now
add to cart

CreditCards and PayPal Accepted

This product is also available in the following bundle(s):