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


v2.9 (May 8, 2018)

Version history

Version History



  • New : OnModuleException event allows for a more flexible custom error-handling processing of exception raised during XData processing request.
  • Fixed : deserialization of array of objects was keeping the same instance for all objects in the array.
  • Fixed : OnEntityModifying event was being fired before merge operation thus not providing correct information about the object in manager and previous state. Breaking change that can be disabled by using _FixEntityModifyingOnUpsert := False


  • New : TXDataClient.Count method. Allows retrieving the number of entities in a specific resource endpoint, optionally using a query filter
  • New : TQueryParser.AddMethod allows registering custom SQL Functions to be called from XData query API.
  • New : TMS RADical WEB enabled! The TMS framework for front-end Web development, TMS RADical WEB has been released and TMS XData is immediately a first-class citizen of this new ecosystem.
  • New : MultiTentant Demo included in distribution shows how to use XData with multi-tentant applications (multiple databases being accessed by the same server).
  • New : /$model built-in URL returns metadata for the whole XData API.
  • Improved : A connection was being retrieved from the pool even when the context manager was not being used by a service operation.
  • Fixed : Service operations invoked via GET method using enumerated type parameters are now supported.


  • New : TXDataRequestHandler.ManagedObjects property.
  • New : Support for default parameter values in service operations from non-Delphi clients (default parameters were already supported in Delphi clients).
  • New : Several new types supported in service operations. Generic arrays, Generics lists of primitive types, Sets, TStrings type.
  • New : OpenAPI/Swagger support.
  • New : JsonNamingStrategy attribute.
  • New : JsonInclude attribute in PODO classes.
  • New : JsonEnumValues attribute.
  • Fixed : Error when using params of type TDate (TDateTime was not affected) in service operations (Regression).
  • Fixed : Design-time wizard icon not showing correctly in Delphi 10.2 Tokyo.


  • New : XDataProperty and XDataExcludeProperty attributes.
  • New : TXDataSeverModule.UnknownMemberHandling property.
  • New : Support for passing parameters by reference in service operations.
  • New : JsonProperty and JsonIgnore attributes.
  • New : Filter functions startswith, endswith and contains.
  • New : Filter function concat.
  • Fixed : Using TStream as a parameter for service operations was causing "JSON converter not found" error.


  • New : Linux support using Delphi 10.2 Tokyo and later.
  • Fixed : Location header of POST responses now uses host of the client request, not the host configured in XData module.


  • New : Delphi 10.2 Tokyo Support
  • Fixed : Server-side stack overflow when trying to load a proxy property sent by the client, if the parent entity of that proxy was merged into the current Object Manager


  • New : Demo project showing authentication using JWT (JSON Web Token)
  • Fixed : XData Server Wizard generating corrupted source code when TMS Component Pack was installed
  • Fixed : Sporadic server error loading proxied lists sent by the client
  • Fixed : JWT encoding not working on XE6


  • New : Url convention now allows $count path segment to retrieve number of entities in a resource.
  • Fixed : TXDataClient.Service failing for Android clients when compiling in Release config
  • Fixed : RefCount property was wrongly being serialized in PODO objects from mobile clients


  • New : TXDataServerModule.SerializeInstanceType property controls how xdata type metadata will appear in JSON response
  • New : TXDataServerModule.SerializeInstanceRef property controls how instances of same object will be represented in JSON response
  • New : Support for entities that have associations in ID (primary key containing foreign keys)
  • New : Support for Variant-type parameters in service operations when using GET HTTP method.
  • New : Support for Nullable values in PODO classes
  • New : Breaking change: TXDataServerModule.PutMode property controls how PUT will behave at server-side
  • New : $expand query option allows clients to have full control on how associated entities appear in JSON response.
  • Improved : Errors on query syntax now return http code 400 instead of 500
  • Fixed : JSON Proxies (@xdata.proxy) sent by the client were not being solved when reading such properties at server-side
  • Fixed : Association references (@xdata.ref) were not being solved when receiving entities in service operations parameters.


  • New : TXDataServerModule.SetEntitySetPermissions allows configuring what operations are available in each resource type
  • New : Service operations can now receive and return any type of object. This increases flexibility significantly as you can use any type of object for structure input/output parameters, or to send/receive DTO classes, etc.
  • New : Service operations can now receive and return TJSONAncestor objects (Delphi XE6 and up only). This allows full control over the JSON request and response.
  • New : Service operations can now receive and return TCriteriaResult objects, making it easy to return Aurelius query results that use projections.
  • New : Server-Side Events allow subscribing listeners events and perform additional server-side logic
  • New : Method TXDataModelBuilder.RemoveEntitySet for more flexibility when building XData models.
  • New : JWT (Json Web Token) authentication and Basic authentication, thanks to new TMS Sparkle
  • New : Delphi 10.1 Berlin support
  • New : Authentication and authorization mechanism, based on TMS Sparkle
  • New : $inlinecount query option allow retrieving the total number of entities when using paged results
  • Improved : TXDataOperationContext.Current now also available in entity resources
  • Improved : All server-side operation (entity CRUD, service operation execution) are now performed in database transactions


  • New : Design-time wizard to create a XData Server with a few clicks
  • Fixed : Service operation using enumerated types as parameters or function results not working properly
  • Fixed : EntitySet requests were not taking xdata-expandlevel header into consideration. This is a breaking change.


  • New : Delphi 10 Seattle support


  • New : TXDataServerModule.DefaultExpandLevel allows defining the expand level of JSON responses when it's not defined by client request
  • New : TXDataOperationContext Request and Response properties gives full control for service implementations to customize the processing of client requests
  • New : TXDataClient.HttpClient property provides low level access to the Http client and allows using OnSendingRequest events to customize requests
  • New : Several built-in functions available to increase flexibility when querying objects in REST requests. New available functions are Upper, Lower, Length, Substring, Position, Year, Month, Day, Hour, Minute and Second
  • Fixed : TXDataClient Get, Delete, Patch and Put operations were broken when using entities with composite id
  • Fixed : POST requests not working correctly with entities with composite key
  • Fixed : Data Modification requests sending content-type header with parameter (for example, ";charset=UTF8") were causing errors


  • New : URIPathSegment attribute allows specifying a different name for operation/service to be used in URL
  • New : HttpMethod attribute allows specifying the HTTP method a service operation should respond to
  • Fixed : GET requests with query order was sometimes causing the same column to appear multiple times in a "ORDER BY" SQL clause


  • New : Support for Delphi XE8


  • New : Support for CORS (Cross-origin resource sharing) preflighted requests


  • Improved : Installer


  • New : TXDataClient methods Get, Post, Put, Delete and List allows easy and high-level access to XData server objects from Delphi clients
  • New : Server support for "x-http-method-override" header (allowing clients to tunnel HTTP methods to server through POST requests)
  • New : Android and iOS support for XData client objects
  • Fixed : Service operations returning nil entities should respond with status code 404
  • Fixed : Issues with floating-point literals in Query URL with non-English server systems


  • New : UserName and Password properties in TXDataServerModule for basic authentication protection
  • New : Service Operations allow adding custom business logic to your server using interfaces and methods
  • New : Multi-Model design makes it easy to create multiple servers with different mapping, types and service operations
  • Fixed : Malfunctioning with $skip and $top query options


  • New : Added Delphi XE7 support

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

View licensing FAQ

Single developer license

license for 1 developer € 495

order now
add to cart

Small team license

license for 2 developers € 745

order now
add to cart

Site license

unlimited developers in the company € 1695

order now
add to cart

CreditCards and PayPal Accepted

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