Excerpt from Clickshare U.S. Patent No. 7,324,972

When TVS receives a request to validate a valid token, it returns the profile of the user identified by that token. Though the TVS_PROFILE data structure is defined in the API, and data can be accessed directly, the following helper functions are provided. In general, this is the preferred access technique, because it is highly likely that the TVS_PROFILE structure will change.
/* these functions are for creating and "loading" a profile structure */
extern int tvs_sizeof_profile( ); 

extern TVS_PROFILE tvs_make user_profile( ); 

extern void tvs_set_userid(TVS_PROFILE prof, unsigned long uid); 

extern void tvs_set_pmid(TVS_PROFILE prof, unsigned short pmid); 

extern void tvs_set_hostid(TVS_PROFILE prof, unsigned long hostid); 

extern void tvs_set_service_class(TVS_PROFILE prof, int class); 

extern void tvs_set_hostid(TVS_PROFILE prof, unsigned long hostid); 

extern void tvs_set_service_class(TVS_PROFILE prof, int class); 

extern void tvs_set_page_class_limit(TVS_PROFILE prof, int limit); 

extern void tvs_set_page_count_limit(TVS_PROFILE prof, int class); 

extern void tvs_set_service_priority(TVS_PROFILE prof, int priority); 

extern void tvs_set_pdac_flag(TVS_PROFILE prof, int flag); 

extern void tvs_set_customer_group(TVS_PROFILE prof, int group); 

extern void tvs_set_adv_context(TVS_PROFILE prof, int ac); 

extern void tvs_set_privacy1_flag(TVS_PROFILE prof, int flag); 

/* upon receipt of a TVS_PROFILE--the acknowledgement of a token validation by TVS--information in the profile can retrieved using the following functions. 

*/ 

/* this is a quick test that the data structure is not garbage */ 

extern int tvs_profile_is_valid(TVS_PROFILE prof); 

extern unsigned long tvs_get_userid(TVS_PROFILE prof); 

extern unsigned short tvs_get_pmid(TVS_PROFILE prof); 

extern unsigned long tvs_get_hostid(TVS_PROFILE prof); 

extern int tvs_get_service_class(TVS_PROFILE prof); 

extern int tvs_get_page_class_limit_TVS_PROFILE prof); 

extern int tvs_get_page_count_limit(TVS_PROFILE prof); 

extern int tvs_get_service_priority(TVS_PROFILE prof); 

extern int tvs_get_page_flag(TVS_PROFILE prof); 

extern int tvs_get_customer_group(TVS_PROFILE prof); 

extern int tvs_get_adv_context(TVS_PROFILE prof); 

extern int tvs_get_privacy1_flag(TVS_PROFILE prof); 

/* the contents of the profile can be displayed in human-readable form */ 

extern void tvs_show_user_grofile(TVS_PROFILE prof); 
The TVS client transmits the following Clickshare-specific information:

-- content server ID (cs_contentpmid)--A globally unique ID number identifying the company which served the content to the user. Clickshare Service Corp. maintains a map of ID numbers to company names and contact addresses.

-- page class (cs_pageclass)--A numeric identifier for the value of the page served. The value is used as a lookup into a table of currency-denominated values which are used to price the page.

-- user ID (cs_userid)--A user identifier, unique to each Clickshare service or content provider, that identifies the user within that provider's site.

-- home publisher ID (cs_homepmid)--A globally unique ID number identifying the company which maintains the financial relationship with the user (user ID) for billing purposes.

-- session ID (cs_sessionID)--An identifier for an activity session by a user. A session is a defined period of time during which an authentication token is valid. The length of a session can be requested by the user, or set by the home provider, upon startup). Sessions may be concatenated in time, but sessions cannot overlap. Session IDs are unique to each publisher for a period of about eight months.

-- customer group (cs_custgroup)--A numeric identifier for the customer's local group. Two groups are global within Clickshare: Group 1, the default standard group and Group 15, the "testdrive" group. All other values are set locally by the home publisher for his own reference.

-- service class (cs_serviceclass)--A coded numeric identified for special service classing. Service classes may be related to markup ratios for retail pricing or may specific the types of services or goods which the user is authorized to acquire or receive.

-- flags (cs_flags)--A coded numeric identifier which concatenates all the user-preference flag information (on/off flags) for this session. These preference flags relate to user privacy, parental-control (content selection) and other features and part of the "contract" between the user and the user's Clickshare Service Provider.

Other open data blocks are designed to carry releasable demographics and topical preferences, or other metrics, depending upon the requirements of Clickshare service members.


5.16. Differential Charging Per Record ("Markup Ratio")


A unique feature of the TVS protocol is the provision for a field which permits differential charging for information sale between an information owner/publisher and various Service Providers ("user owners"). Each logged charge record includes a data field carrying the "[Page] Value Class" of the content or service vended by the vending provider site (publisher). The Value Class is a numeric value assigned by the vending provider from a common table of values known and agreed on a system-wide basis. This Value represents the "wholesale royalty" which the vending site will receive at settlement from Clickshare/TVS, less a transaction fee withheld and charged by Clickshare/TVS.

However, the Service Provider who maintains account records of the end user and is responsible for billing the end user, may wish to apply a retail markup to the Value Class expected by the vending publisher. In the TVS Service, this retail markup is know as the "markup ratio." The "markup ratio" is derived from the Service Class identifier, and is among the user preference attributes contained in the token which moves about the service following initial authentication of the user for a TVS session. The operator of the TVS authentication and logging service does not use this field in any way. However, the vending publisher may need to know the Markup Ratio being applied by the Service Provider in order to "show" the price of a service or resource to the end-user prior to or during the sale process.

The markup ratio allows the vending publisher to provide an instantaneous "price tag", including any retail markup, to the requesting user, prior to sale. Because the markup ratio is set by the Service Provider, two users from two different Service Providers may pay a different retail price for the same resource provided at the same time by a vending publisher. In effect, the same good may show different "price tags" simultaneously to different users. This feature is analogous to the operation of the wholesale-retail marketplace in the physical world, where consumers may find widely varying retail prices for the same physical product at different stores as a result of different marketing and cost structures of each retailer. For example, one appliance store might sell the Brand A toaster for $29.95. A competing appliance store might sell the identical Brand A toaster for $25.95. Both purchased the toaster from a wholesaler for $14.95. Under the Clickshare Service, the wholesaler must be able to "show" both prices depending which "store" the consumer is inquiring from.

5.2.3 User Profile

Publishing Members maintain a "user profile" of each User Member. This profile contains three types of information: "preference" information, "service class" information and, if desired, .pricing. information. Preference information is given by the user member, while service-class information and pricing information are provided by the Publishing Member. These types of information relate to the variety and quality of services offered by the Publishing Member, and each may affect the cost of that service. Some of the profile information can be changed on a session basis, where other types can only be changed by the Publishing Member at fixed points.

5.12. THE TOKEN VALIDATION SERVICE (TVS)

The Token Validation Service (TVS) handles user session management. After a TVS-enabled HTTP server authenticates a new user, it passes that user's profile information to Clickshare along with a request for a new authentication token. Thereafter, for the duration of that user's session, the Clickshare TVS server "validates" the user whenever the user presents a URL request to any TVS-enabled HTTP server.

	-- Alpha-numeric identifying number of the user
	-- User-owning publishing-member number (Clickshare Service Provider)
	-- Session number
	-- Current number of authentications (cumulative)

	-- User service parameters including:
		-- Parental control flag (ON/OFF)
		-- Full ads / links only / no ads
		-- Pricing query threshold
		-- Service-class designator (price markup value)
		-- Session start time
		-- Topical information preferences (if .open.)
		-- Age, sex, income, demographic profile (if .open.)

Upon completion of a session, this information is logged to provide a record of the session which will be used to accompany billing and settlement information. No permanent knowledge of a user, or a specific session, is retained by this server.

In addition, the TVS client transmits the following Clickshare-specific information:

-- content server ID (cs_contentpmid) -- A globally unique ID number identifying the company which served the content to the user. Clickshare Service Corp. maintains a map of ID numbers to company names and contact addresses.

-- page class (cs_pageclass) -- A numeric identifier for the value of the page served. The value is used as a lookup into a table of currency-denominated values which are used to price the page.

-- user ID (cs_userid) -- A user identifier, unique to each Clickshare service or content provider, that identifies the user within that provider.s site. $

-- home publisher ID (cs_homepmid) -- A globally unique ID number identifying the company which maintains the financial relationship with the user (user ID) for billing purposes. $

-- session ID (cs_sessionID) -- An identifier for an activity session by a user. A session is a defined period of time during which an authentication token is valid. The length of a session can be requested by the user, or set by the home provider, upon startup). Sessions may be concatenated in time, but sessions cannot overlap. Session IDs are unique to each publisher for a period of about eight months. $

-- customer group (cs_custgroup) -- A numeric identifier for the customer.s local group. Two groups are global within Clickshare: Group 1, the default standard group and Group 15, the .testdrive. group. All other values are set locally by the home publisher for his own reference. $

-- service class (cs_serviceclass) -- A coded numeric identified for special service classing. Service classes may be related to markup ratios for retail pricing or may specific the types of services or goods which the user is authorized to acquire or receive. $

-- flags (cs_flags) -- A coded numeric identifier which concatenates all the user-preference flag information (on/off flags) for this session. These preference flags relate to user privacy, parental-control (content selection) and other features and part of the .contract. between the user and the user.s Clickshare Service Provider. $

5.16. DIFFERENTIAL CHARGING PER RECORD (.MARKUP RATIO.)

A unique feature of the TVS protocol is the provision for a field which permits differential charging for information sale between an information owner/publisher and various Service Providers (.user owners.). Each logged charge record includes a data field carrying the .[Page] Value Class. of the content or service vended by the vending provider site (publisher). The Value Class is a numeric value assigned by the vending provider from a common table of values known and agreed on a system-wide basis. This Value represents the .wholesale royalty. which the vending site will receive at settlement from Clickshare/TVS, less a transaction fee withheld and charged by Clickshare/TVS.

However, the Service Provider who maintains account records of the end user and is responsible for billing the end user, may wish to apply a retail markup to the Value Class expected by the vending publisher. In the TVS Service, this retail markup is know as the .markup ratio.. The .markup ratio. is derived from the Service Class identifier, and is among the user preference attributes contained in the token which moves about the service following initial authentication of the user for a TVS session. The operator of the TVS authentication and logging service does not use this field in any way. However, the vending publisher may need to know the Markup Ratio being applied by the Service Provider in order to .show. the price of a service or resource to the end-user prior to or during the sale process.

The markup ratio allows the vending publisher to provide an instantaneous .price tag., including any retail markup, to the requesting user, prior to sale. Because the markup ratio is set by the Service Provider, two users from two different Service Providers may pay a different retail price for the same resource provided at the same time by a vending publisher. In effect, the same good may show different .price tags. simultaneously to different users. This feature is analogous to the operation of the wholesale-retail marketplace in the physical world, where consumers may find widely varying retail prices for the same physical product at different stores as a result of different marketing and cost structures of each retailer. For example, one appliance store might sell the Brand A toaster for $29.95. A competing appliance store might sell the identical Brand A toaster for $25.95. Both purchased the toaster from a wholesaler for $14.95. Under the Clickshare Service, the wholesaler must be able to .show. both prices depending which .store. the consumer is inquiring from.

UNIVERSAL RESOURCE IDENTIFIER

The near-standardization of Extensible Markup Language (XML) presents an opportunity to create the notion of a Universal Resource Identifier (URI) which would be embedded in XML-marked-up documents or resources. This URI could include six numeric components which, taken together, constitute a globally unique resource identifier.

5.20.1. The creation date/time in YYYYMMDDHHMMSS format.

5.20.2. The PubMbrID of the resource owner entitled to receive royalty payments, until the expiration date (see 5.20.4 below).

5.20.3. A Digital Object Identifier (DOI) in the syntax and form as proposed by the International DOI Foundation [see http://www.doi.org/] or, if DOI fails to become a publisher standard, in the format of a Uniform Resource Name(URN) as proposed by the Internet Engineering Task Force.

5.20.4. A expiration-date in YYYYMMDD format after which the document is prohibited from being served directly. Instead, the CPM server must redirect the requesting CM user to the address derived from the Digital Object Identifier.

5.20.5. A royalty payment which becomes due to the resource/document originator whenever a copy is served. This field will include both a designation of the currency and the payment value.

5.23. CREDIT MANAGEMENT SERVICE OPTION

Versions of TVS will include a Credit Management Service (CMS) feature which accommodates the need for the establishment of a financial .credit limit. set by the CSP of the CM end user. This will be accomplished through the addition of a field to the user-profile data (or the extended use of the pricing query threshold field) which is stored in the CSP.s dynamic session database when the CM user initiates a session [See 5.13.1, above]. The operation of the CMS is as follows: