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


v3.1.1 (August 2, 2018)

Version history

Version History



  • New : TXDataWebConnection.OnResponse event intercepts any successful HTTP request made by XData web client framework
  • Improved : XData Music demo improvements
  • Fixed : Servers with Int64 type in model were not supported when used from TMS Web client


  • New : XData Music Web Application demo. A full web application example using TMS XData server using TMS Web Core as web front-end. Full source code is provide, and the online version of demo is available at
  • New : TXDataWebClient.ReferenceSolvingMode allows automatic solving of $ref occurrences in JSON response, which is now the default behavior.
  • New : Demos XData Web-Client Framework, showing use of TXDataWebClient, TXDataWebDataset and integration with FNC Grid.


  • New : TXDataWebDataset.CurrentData provides the underlying JSON object of the current web dataset record.
  • New : TXDataWebConnection.Open method allows providing callbacks for connection successful and connection error.
  • New : TXDataWebConnection.OnRequest and TXDataWebClient.OnRequest events allow intercepting and modifying outgoing requests (for example, to add authentication headers).
  • New : TXDataWebConnection.OnError event which is fired whenever an error happens while performing requests to XData server from TMS Web Core apps.
  • New : TXDataWebConnection.DesignData allows adding custom headers at design-time (for example authorization) to properly connect to XData server.
  • New : TXDataWebClient.RawInvoke allows high-level invoking of service operations from TMS Web Core applications.
  • New : TXDataWebClient request methods (List, Get, Post, RawInvoke, etc.) now have overloaded methods that accept callback functions.
  • New : Full-featured TMS XData Web-Client Framework provides RAD, design-time and high-level components for building web applications using TMS Web Core and TMS XData. Buildling a REST API-based web application has never been as easy, including dataset-like usage that feels home to Delphi developers.
  • Improved : TXDataWebDataset.SetJsonData now accepts non-array values (to edit a single object, for example).
  • Improved : TXDataWebClient.Get overloaded method allows passing an additional query string (to use $expand option for example).
  • Improved : TXDataServerModule.Create overload requiring just BaseUrl - no database connection pool is needed. Useful for XData servers that do not connect to a database or have specific database usage.
  • Improved : TMS Web Core-only TXDataConnection and TXDataDataset components has been renamed to TXDataWebConnection and TXDataWebDataset. This is a breaking change.
  • Improved : Smooth design-time experience with TXDataWebDataset. Manually loading field defs are not necessary anymore - just connect dataset to a web connection, provide the URL and fields will be loaded automatically at both design-time or runtime. Design-time menu option "Load Field Defs" has been removed.
  • Improved : Editing TXDataWebDataset.EntitySetName at design-time in object inspector now provides a combobox with the list of available names retrieved from the server.
  • Improved : Dataset fields now supported in TXDataWebDataset. They will contain data (list of objects) for associated lists (many-valued associations).
  • Fixed : Memory leaks when using mobile/Linux compilers (when using automatic reference counting)
  • Fixed : Exceptions that were not inherited from EXDataHttpException were wrongly reporting an error code (regression)


  • 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):