Author: Libor Viktorin
Organization: MarketLinx
Telephone Number: (865) 470-1627
Address: 1400 Centerpoint Blvd. Suite 100; Knoxville, TN 37932
Email: lviktorin@marketlinx.com
Status: Proposal
Date: July 20, 2007
Version: 1.7
Validation expressions currently use several special operand tokens (see table 11-34) to account for data such as UserID, BrokerCode etc, describing the current user. The values for these tokens are set in the Login transaction response.
With broader use of the update transaction and validation, it's becoming clear that the current tokens may not be sufficient for all situations. RETS needs a way to let the server provide any information pertaining to the current session. This document proposes a way to do it.
In chapter 4.6, the normal "OK" response format should be given as:
<RETS 1*SP ReplyCode=quoted-reply-code 1*SP ReplyText=quoted-string *SP > <RETS-RESPONSE>[member-name-key ] [user-info-key ] [broker-key ] [metadata-ver-key ] [metadata-timestamp-key ] [min-metadata-timestamp-key ] [ office-list-key ] [ balance-key ] [ timeout-key ] [ pwd-expire-key ] *( info-token-key ) capability-url-list </RETS-RESPONSE> [<RETS-STATUS [1*SP ReplyCode=quoted-end-reply-code 1*SP ReplyText=quoted-string * SP]/> </RETS> CRLF |
In each of chapters 4.7.1, 4.7.2, 4.7.3, 4.7.4, 4.8.1,
4.8.2 the following should be added:
|
This argument is deprecated and will be replaced by the
Session Information Token (see 4.7.5). |
In chapter 4.8.3 the following should be added:
|
This argument is deprecated and will be replaced by the
Session Information Token (see 4.7.5). |
Following text should be inserted before Chapter
4.7.5. Current chapter 4.7.5 should be renumbered.
4.7.5. Session Information Tokensinfo-token-key ::=
Info = info-token-name [ ;
info-token-type ] ; info-token-value
CRLF
More well-known Information Tokens may be added in later version of this document. |
Following table should replace Table 11-34. The
DataType Column should be used only if the Validation Expressions, as suggested
by the Update Workgroup, use data types.
|
Token Name |
Data Type |
Description |
|
.TRUE. |
BOOLEAN |
Boolean value of TRUE (1) |
|
.FALSE. |
BOOLEAN |
Boolean value of FALSE (0) |
|
.EMPTY. |
EMPTY |
A value that matches an empty field. Supplies an empty field when used in a SET expression. |
|
.TODAY. |
TIME |
The current date. |
|
.NOW. |
TIME |
The current time. |
|
.ENTRY. |
type of the current field |
The new field value. |
|
.OLDVALUE. |
type of the current field |
The original value of the field as returned from the host in the search operation. If the field is new, .OLDVALUE. is an EMPTY value. |
|
.USERID. |
CHAR |
The value of the user-id field returned in the Login transaction, unless an info-token-key named USERID has been returned in the Login transaction. |
|
.USERCLASS. |
CHAR |
The value of the user-class field returned in the Login transaction, unless an info-token-key named USERCLASS has been returned in the Login transaction. |
|
.USERLEVEL. |
CHAR |
The value of the user-level field returned in the Login transaction, unless an info-token-key named USERLEVEL has been returned in the Login transaction. |
|
.AGENTCODE. |
CHAR |
The value of the agent-code field returned in the Login transaction, unless an info-token-key named AGENTCODE has been returned in the Login transaction. |
|
.BROKERCODE. |
CHAR |
The value of the broker-code field returned in the Login transaction, unless an info-token-key named BROKERCODE has been returned in the Login transaction. |
|
.BROKERBRANCH. |
CHAR |
The value of the broker-branch field returned in the Login transaction, unless an info-token-key named BROKERBRANCH has been returned in the Login transaction. |
|
.UPDATEACTION. |
CHAR |
Name of the UpdateAction for which this validation is performed. |
|
.any. |
(see Description) |
If the name of the SpecValue (stripped of the first and last dot) is equal to a name of one of the info-token-keys returned as part of the Login response, then the type and value of this SpecValue is defined by that info-token-key. If no such info-token-key exists, the value is ERROR. |
While the proposed solution makes the Login response cleaner, better organized and more flexible, it poses a big thread to a backwards compatibility. That's why the deprecated items are left in place, allowing old servers and clients to stay compatible.
In moving forward, both servers and clients are encouraged to break backward compatibility and drop the deprecated items as soon as they believe all the end-points they communicate with have implemented this proposal.
Breaking backwards compatibility will prepare servers and clients to the next stage, where the deprecated items will really be dropped.