CDOXMPP - Clayster Data Orchestrator XMPP

Introduction

This protocol describes version 1.0 of CDOXMPP - a XMPP implementation of Clayster Data Orchestration. It does not cover data exchange between entities other than actions described in CDO.

Terminology

cdoxmpp specific terminology

XMPP fundamentals

Security

All clients must use TLS 1.2 or later. Login for entities without human interaction must use SASL External.

Connection and Reconnection

When a client loses connection it may reconnect within a minimum 1-5 seconds that must be randomized.

If connection fails the client may reconnect within 15-30 seconds that must be randomized.

If connection fails because of bad authentication the client must not reconnect with same credentials.

Serialization pattern

All names in CDO are lowercased and trimmed from white spaces. Example:

"Set Meta Attributes" becomes "setmetaattributes".

Data primitives are wrapped with their serialized type name.

Example:

<boolean>true</boolean>

Data objects are wrapped with the dataobjects serialized name.

Example:

<setmetaattributes>
    <metaattributes>
        <dictionary>...</dictionary>
    </metaattributes>
</setmetaattributes>

Communication flow

Stanza messages sent to the entities must be sent to bare XMPP address (without explicit resource).

Stanza iqs must be sent to explicit resources. This requires XMPP presence subscriptions and is only allowed in specific cases such as the duration of a data session. Clients must not subscribe to the orchestrator.

Note on errors

Clayster data orchestration includes error management in action responses and cdoxmpp uses these objects as-is. Native XMPP errors may be used for message delivery status and XMPP only related information.

Time synchronization

In order to synchronize time between receiver/responder the actor Time is used. It supports XEP 202 and also high level actions specified in Actions. Requester and responder must assume synchronized timestamps.

Timeouts

Each actionrequest contains a time out and an acknowledgement time out (ack timeout).

The time out indicates when the request is no longer of importance and the receiver may after a timeout stop processing the request.

If the result takes longer time to compute than stated ack time out the receiver must send an explicit acknowledgement. If the result is computed and started to deliver prior the given ack timeout the receiver must not send an acknowledgement.

A response has neither timeout or ack timeout and relies solely on XMPP errors.

Timeouts visualized

No time out

In this example neither acknowledgement timeout or timeout is hit.

Timeouts - No timeout

Acknowledgement time out

In this example neither acknowledgement timeout or timeout is hit.

Timeouts - Ack timeout

Timeout

In this example neither acknowledgement timeout or timeout is hit. The receiver choses to not respond.

Timeouts - Timeout

Primitives

List of primitives and how they are serialized.

String

Serialized as

<string>DATA</string>

Where DATA is compatible with xs:string

Boolean

Serialized as

<boolean>DATA</boolean>

Where DATA is compatible with xs:boolean

Byte

Serialized as

Integer

Serialized as

<integer>DATA</integer>

Where DATA is compatible with xs:integer

Double

Serialized as

<double>DATA</double>

Where DATA is compatible with xs:double

Decimal

Serialized as

<decimal>DATA</decimal>

Where DATA is compatible with xs:decimal

Timestamp

Serialized as

<timestamp>DATA</timestamp>

Where DATA is compatible with xs:dateTime without timezone information - always UTC

Time frame

Serialized as

<timeframe>
    <from><timestamp>..</timestamp></from>
    <to><timestamp>..</timestamp></to>
</timeframe>

Dictionary

Serialized as

<dictionary>
    <item>
        <key>KEY</key>
        <value>VALUE</value>
    </item>
</dictionary>

Where

  • item is recurring
  • KEY is a primitive of either type string or integer.
  • KEY is unique within the dictionary.
  • VALUE is a valid primitive or dataobject.

Strongly typed

Dictionary may be strongly typed for either key or both key and value

  • A dictionary with typed key is denoted as Dictionary<KEYTYPE>
  • A dictionary with typed key and value is denoted as Dictionary<KEYTYPE, VALUETYPE>

List

Serialized as

<list>
    VALUE
</list>

Where VALUE is a recurring item with a valid primitive or dataobject.

Strongly typed

List may be strongly typed for values

  • A list with typed value is denoted as List<VALUETYPE>

Certificate

Serialized as

<certificate>DATA</certificate>

Where DATA is compatible with xs:string

Entity ID

Serialized as

<entityid>DATA</entityid>

Where DATA is compatible with xs:string as well as CDO: Text field that must include only literals and numbers)

Address

Serialized as

<address>DATA</address>

Where DATA is compatible with xs:string

Data verb

Serialized as

<dataverb>DATA</dataverb>

Where DATA is compatible with xs:string

Resource path

Serialized as

<resourcepath>DATA</resourcepath>

Where DATA is compatible with xs:string as well as CDO:

A hierarchially formed path forming an address to an
explicit resource relative to an entity.
Must conform to the relative-part described in
RFC 3986 (Uniform Resource Identifier).

External

Serialized as NOT TO BE IMPLEMENTED FROM THIS PROTOCOL DEFINITION

Actions

Actions are transmitted via stanza messages. Each action sequence (pair of request and response) must have an in-actor session unique ID. It is recommended to be non-linear such as a uuid or guid.

Serialization uses the pattern as described in (LINK TO Serialization pattern above).

Message format is:

<message to='target entity address'
    from='source entity address'>
    <actionrequest xmlns="urn:clayster:cdo" name='Name of action' id='unique id of request' 
        timeouts='TIMESTAMP FOR TIMEOUT' acktimeouts='TIMESTAMP FOR ACK TIMEOUT'>
        <dataobjectname>
            FIELDS
        </dataobjectname>
    </actionrequest>
</message>

<message to='source entity address'
    from='target entity address'>
    <actionacknowledgement id='unique id of request'/>
</message>

<message to='source entity address'
    from='target entity address'>
    <actionresponse xmlns="urn:clayster:cdo" name='Name of action' id='unique id of request'>
        <dataobjectname>
            FIELDS
        </dataobjectname>
    </actionrequest>
</message>

Where FIELDS are serialized elements as described in Data objects.

Warning

ID's may only be assumed unique within the session between two actors. Clients must enforce actor validity for the request id.

Provisioning

Entities

Set claim key

This action describes how an entity sets a claim key. The key can be used by another entity to claim ownership. This action is not applicable for legal entities.

Serialized name: setclaimkey

From To Data object
Entity Orchestrator Entity Set Claimkey
Orchestrator Entity Generic Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="setclaimkey" id="ac412b53-e166-41d8-8e6e-513314d2ecac" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitysetclaimkey>
      <!--Mandatory field Claimkey-->
      <claimkey>
        <string>..</string>
      </claimkey>
    </entitysetclaimkey>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="setclaimkey" id="ac412b53-e166-41d8-8e6e-513314d2ecac" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Set meta attributes

This action describes how an entity sets meta attributes. They are primarilly used for indexed searches. Therefor the payload may vary for different actors. This action removes any attribute not included in the payload.

Serialized name: setmetaattributes

From To Data object
Entity Orchestrator Entity Set Meta Attributes
Orchestrator Entity Generic Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="setmetaattributes" id="884a011f-2b80-4c29-bd88-4a41eb32e8ac" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitysetmetaattributes>
      <!--Mandatory field Attributes-->
      <attributes>
        <dictionary>..</dictionary>
      </attributes>
    </entitysetmetaattributes>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="setmetaattributes" id="884a011f-2b80-4c29-bd88-4a41eb32e8ac" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Set resources

This action describes how an entity sets resources. They are used for searching and expressing capabilities on resource level. This action does not clear previous resources but upserts the payload.

Serialized name: setresources

From To Data object
Entity Orchestrator Entity Set Resources
Orchestrator Entity Generic Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="setresources" id="92e96bd6-9b14-49c6-82db-1d12329ee942" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitysetresources>
      <!--Mandatory field Resources-->
      <resources>
        <list>..</list>
      </resources>
    </entitysetresources>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="setresources" id="92e96bd6-9b14-49c6-82db-1d12329ee942" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Remove resources

This action describes how an entity remove resources.

Serialized name: removeresources

From To Data object
Entity Orchestrator Entity Remove Resources
Orchestrator Entity Generic Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="removeresources" id="7b96aae4-42c7-44f9-971a-dbd977de1e94" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entityremoveresources>
      <!--Optional field Remove all-->
      <removeall>
        <boolean>..</boolean>
      </removeall>
      <!--Optional field Resources paths-->
      <resourcespaths>
        <list>..</list>
      </resourcespaths>
    </entityremoveresources>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="removeresources" id="7b96aae4-42c7-44f9-971a-dbd977de1e94" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>

Services

Create service

This action creates a service.

Serialized name: createservice

From To Data object
Legal Entity Orchestrator Legal Entity Create Service
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="createservice" id="be725642-9d2b-4b39-a6a4-55d21173899a" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitycreateservice>
      <!--Mandatory field Attributes-->
      <attributes>
        <dictionary>..</dictionary>
      </attributes>
    </legalentitycreateservice>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="createservice" id="be725642-9d2b-4b39-a6a4-55d21173899a" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Set service certificate

May be used by owner of a service or the service itself.

Serialized name: setservicecertificate

From To Data object
Legal Entity Orchestrator Legal Entity Set Service Certificate
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="setservicecertificate" id="50bfec4d-b927-4b20-9cf0-94363e2f9985" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitysetservicecertificate>
      <!--Mandatory field Service signature-->
      <servicesignature>
        <signature>
          <!--Mandatory field Message-->
          <message>
            <string>..</string>
          </message>
          <!--Mandatory field Signature-->
          <signature>
            <list>..</list>
          </signature>
          <!--Mandatory field Public certificate-->
          <publiccertificate>
            <certificate>..</certificate>
          </publiccertificate>
        </signature>
      </servicesignature>
    </legalentitysetservicecertificate>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="setservicecertificate" id="50bfec4d-b927-4b20-9cf0-94363e2f9985" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>

Ownership

Entity ownership

Claim entity ownership

Claiming ownership of an entity.

Serialized name: claimentityownership

From To Data object
Legal Entity Orchestrator Legal Entity Claim Entity Ownership
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="claimentityownership" id="8bf4fde2-a080-4f85-865e-e76259006eae" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentityclaimentityownership>
      <!--Mandatory field Claim Key-->
      <claimkey>
        <string>..</string>
      </claimkey>
      <!--Mandatory field Vendor-->
      <vendor>
        <string>..</string>
      </vendor>
    </legalentityclaimentityownership>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="claimentityownership" id="8bf4fde2-a080-4f85-865e-e76259006eae" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>

Transfer ownership

Transfer ownership

Transfer ownership of an entity to another legal entity.

Serialized name: transferownership

From To Data object
Legal Entity Orchestrator Legal Entity Transfer Ownership
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="transferownership" id="c99148c1-1bc2-4fa1-b586-068d721b74b8" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitytransferownership>
      <!--Mandatory field Offered item-->
      <offereditem>
        <entityid>..</entityid>
      </offereditem>
      <!--Mandatory field Offered to-->
      <offeredto>
        <entityid>..</entityid>
      </offeredto>
    </legalentitytransferownership>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="transferownership" id="c99148c1-1bc2-4fa1-b586-068d721b74b8" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Ownership offered

Transfer ownership of an entity to another legal entity has been offered.

Serialized name: ownershipoffered

From To Data object
Orchestrator Legal Entity Legal Entity Ownership Offered
Legal Entity Orchestrator Generic Accept Response

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="ownershipoffered" id="00d21a24-85c8-416b-86ac-e231ee6834e0" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentityownershipoffered>
      <!--Mandatory field Offered item-->
      <offereditem>
        <entityid>..</entityid>
      </offereditem>
      <!--Mandatory field Offeree-->
      <offeree>
        <entityid>..</entityid>
      </offeree>
    </legalentityownershipoffered>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="ownershipoffered" id="00d21a24-85c8-416b-86ac-e231ee6834e0" xmlns="urn:clayster:cdo">
    <genericacceptresponse>
      <!--Mandatory field Accept-->
      <accept>
        <boolean>..</boolean>
      </accept>
      <!--Optional field Message-->
      <message>
        <string>..</string>
      </message>
      <!--Inherited from Generic Response-->
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericacceptresponse>
  </actionresponse>
</message>

Contracts

Generic contract establishment

Create contract

Create contract.

Serialized name: createcontract

From To Data object
Legal Entity Orchestrator Legal Entity Create Contract
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="createcontract" id="f244ffd4-4f64-4de1-84b2-639c41af6c20" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitycreatecontract>
      <!--Mandatory field Contract proposal-->
      <contractproposal>
        <contract />
      </contractproposal>
    </legalentitycreatecontract>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="createcontract" id="f244ffd4-4f64-4de1-84b2-639c41af6c20" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Contract offered

Contract has been offered.

Serialized name: contractoffered

From To Data object
Orchestrator Legal Entity Legal Entity Contract Offered
Legal Entity Orchestrator Generic Accept Response

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="contractoffered" id="c821bf1c-4533-4640-9a4a-b7d400b4143f" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitycontractoffered>
      <!--Mandatory field Contract proposal-->
      <contractproposal>
        <contract />
      </contractproposal>
    </legalentitycontractoffered>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="contractoffered" id="c821bf1c-4533-4640-9a4a-b7d400b4143f" xmlns="urn:clayster:cdo">
    <genericacceptresponse>
      <!--Mandatory field Accept-->
      <accept>
        <boolean>..</boolean>
      </accept>
      <!--Optional field Message-->
      <message>
        <string>..</string>
      </message>
      <!--Inherited from Generic Response-->
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericacceptresponse>
  </actionresponse>
</message>

Generic contract termination

Terminate contract

Terminate contract.

Serialized name: terminatecontract

From To Data object
Legal Entity Orchestrator Legal Entity Terminate Contract
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="terminatecontract" id="4eaf5bf1-aded-4084-991f-2c7e65ba50f4" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentityterminatecontract>
      <!--Mandatory field Contract ID-->
      <contractid>
        <string>..</string>
      </contractid>
    </legalentityterminatecontract>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="terminatecontract" id="4eaf5bf1-aded-4084-991f-2c7e65ba50f4" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Contract terminated

Contract has been terminated.

Serialized name: contractterminated

From To Data object
Orchestrator Legal Entity Legal Entity Contract Terminated
Legal Entity Orchestrator Generic Response

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="contractterminated" id="e29bebe9-8cd8-41e1-aa4b-e70f49e170b4" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitycontractterminated>
      <!--Mandatory field Contract ID-->
      <contractid>
        <string>..</string>
      </contractid>
    </legalentitycontractterminated>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="contractterminated" id="e29bebe9-8cd8-41e1-aa4b-e70f49e170b4" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>

Sessions

Sessions are used to keep track of temporary/momentary access rights, transfer costs and intellectual property.

Parties in a session are the targeted entitys owner, the requester and the orchestrator. The owner is control of the access right and one party of the intellectual property contract. The orchestrator is one party of the transfer contract. The requester is one party of the intellectual property contract and one property of the transfer contract.

The session includes access rights (data verbs) for specific resources.

Session establishment

Sessions are established according to the sequence diagram below;

Sessions - Establishment

Request session

Request a session.

Serialized name: requestsession

From To Data object
Entity Orchestrator Entity Request Session
Orchestrator Entity Entity Request Session Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="requestsession" id="b647cec1-af6e-4360-8cc3-01281e9185db" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entityrequestsession>
      <!--Mandatory field Target entity-->
      <targetentity>
        <entityid>..</entityid>
      </targetentity>
      <!--Mandatory field Resource access rights-->
      <resourceaccessrights>
        <list>..</list>
      </resourceaccessrights>
      <!--Optional field Proposed IPR Contracts-->
      <proposediprcontracts>
        <list>..</list>
      </proposediprcontracts>
      <!--Optional field Proposed Data transfer contract-->
      <proposeddatatransfercontract>
        <datatransfercontract>
          <!--Inherited from Contract-->
        </datatransfercontract>
      </proposeddatatransfercontract>
      <!--Optional field Session length-->
      <sessionlength>
        <integer>..</integer>
      </sessionlength>
    </entityrequestsession>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="requestsession" id="b647cec1-af6e-4360-8cc3-01281e9185db" xmlns="urn:clayster:cdo">
    <entityrequestsessionresponse>
      <!--Optional field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
      <!--Optional field Resource access rights-->
      <resourceaccessrights>
        <list>..</list>
      </resourceaccessrights>
      <!--Optional field Proposed IPR Contracts-->
      <proposediprcontracts>
        <list>..</list>
      </proposediprcontracts>
      <!--Optional field Proposed Data transfer contract-->
      <proposeddatatransfercontract>
        <datatransfercontract>
          <!--Inherited from Contract-->
        </datatransfercontract>
      </proposeddatatransfercontract>
      <!--Optional field Session length-->
      <sessionlength>
        <integer>..</integer>
      </sessionlength>
      <!--Inherited from Generic Response-->
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </entityrequestsessionresponse>
  </actionresponse>
</message>
Start session

This action starts the session (must previously be requested). This action includes and accepts contracts proposed by Orchestrator and Owner initiated by Request session response.

Note Only legal entities may accept contracts.

Serialized name: startsession

From To Data object
Entity Orchestrator Entity Start Session
Orchestrator Entity Entity Start Session Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="startsession" id="9f1a8acc-bf50-46ca-abed-c233177054ed" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitystartsession>
      <!--Mandatory field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
    </entitystartsession>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="startsession" id="9f1a8acc-bf50-46ca-abed-c233177054ed" xmlns="urn:clayster:cdo">
    <entitystartsessionresponse>
      <!--Mandatory field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
      <!--Optional field Target address-->
      <targetaddress>
        <address>..</address>
      </targetaddress>
      <!--Inherited from Generic Response-->
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </entitystartsessionresponse>
  </actionresponse>
</message>
Reject session

This action rejects session offering by Orchestrator and Owner initiated by Request session response.

Serialized name: rejectsession

From To Data object
Entity Orchestrator Entity Reject Session
Orchestrator Entity Generic Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="rejectsession" id="8edd5b24-0003-4d2a-a2fc-98bd607bd704" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entityrejectsession>
      <!--Mandatory field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
    </entityrejectsession>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="rejectsession" id="8edd5b24-0003-4d2a-a2fc-98bd607bd704" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Request access

Request access to resources.

Serialized name: requestaccess

From To Data object
Orchestrator Legal Entity Legal Entity Requested Access
Legal Entity Orchestrator Legal Entity Requested Access Response

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="requestaccess" id="ed0a4508-648e-41ad-b922-506ac343d0b8" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentityrequestedaccess>
      <!--Mandatory field Resource access rights-->
      <resourceaccessrights>
        <list>..</list>
      </resourceaccessrights>
      <!--Mandatory field Requestee Entity-->
      <requesteeentity>
        <entityid>..</entityid>
      </requesteeentity>
    </legalentityrequestedaccess>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="requestaccess" id="ed0a4508-648e-41ad-b922-506ac343d0b8" xmlns="urn:clayster:cdo">
    <legalentityrequestedaccessresponse>
      <!--Optional field Accept-->
      <accept>
        <boolean>..</boolean>
      </accept>
      <!--Optional field Resource access rights-->
      <resourceaccessrights>
        <list>..</list>
      </resourceaccessrights>
      <!--Optional field IPR Contracts-->
      <iprcontracts>
        <list>..</list>
      </iprcontracts>
      <!--Optional field Session length-->
      <sessionlength>
        <integer>..</integer>
      </sessionlength>
      <!--Inherited from Generic Response-->
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </legalentityrequestedaccessresponse>
  </actionresponse>
</message>
Session started

Information to an entity that a session is started. Includes access rights.

Serialized name: sessionstarted

From To Data object
Orchestrator Entity Entity Session Started
Entity Orchestrator Generic Response

Example xml:

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionrequest name="sessionstarted" id="351137ab-0fd4-45ff-ad21-6f3276e6bc52" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitysessionstarted>
      <!--Mandatory field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
      <!--Mandatory field Resource access rights-->
      <resourceaccessrights>
        <list>..</list>
      </resourceaccessrights>
      <!--Mandatory field Session expires-->
      <sessionexpires>
        <timestamp>..</timestamp>
      </sessionexpires>
      <!--Mandatory field Requestee address-->
      <requesteeaddress>
        <address>..</address>
      </requesteeaddress>
    </entitysessionstarted>
  </actionrequest>
</message>

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionresponse name="sessionstarted" id="351137ab-0fd4-45ff-ad21-6f3276e6bc52" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>

Session termination

Terminate session

Terminate session.

Serialized name: terminatesession

From To Data object
Entity Orchestrator Entity Terminate Session
Orchestrator Entity Generic Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="terminatesession" id="44014d60-89ed-4030-ae4c-09de901cd20e" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entityterminatesession>
      <!--Mandatory field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
    </entityterminatesession>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="terminatesession" id="44014d60-89ed-4030-ae4c-09de901cd20e" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>
Session terminated

Session terminated.

Serialized name: sessionterminated

From To Data object
Orchestrator Entity Entity Session Terminated
Entity Orchestrator Generic Response

Example xml:

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionrequest name="sessionterminated" id="ce2715a8-dbf6-4e49-ac8c-c3f3198ef1ad" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitysessionterminated>
      <!--Mandatory field Session ID-->
      <sessionid>
        <string>..</string>
      </sessionid>
    </entitysessionterminated>
  </actionrequest>
</message>

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionresponse name="sessionterminated" id="ce2715a8-dbf6-4e49-ac8c-c3f3198ef1ad" xmlns="urn:clayster:cdo">
    <genericresponse>
      <!--Mandatory field Successful-->
      <successful>
        <boolean>..</boolean>
      </successful>
      <!--Optional field Information Messages-->
      <informationmessages>
        <list>..</list>
      </informationmessages>
      <!--Optional field Warning Messages-->
      <warningmessages>
        <list>..</list>
      </warningmessages>
      <!--Optional field Error Messages-->
      <errormessages>
        <list>..</list>
      </errormessages>
    </genericresponse>
  </actionresponse>
</message>

Data objects

Data objects contains fields with data objects or primitives. Each data object is serialized with the xml format:

<dataobject name="Name of data object">
    FIELDS
</dataobject>

Contract

Serialized name: contract

Name Serialization name Type Mandatory Description

Data transfer contract

Serialized name: datatransfercontract Inherits Contract

Name Serialization name Type Mandatory Description

Proxy contract

Serialized name: proxycontract Inherits Contract

Name Serialization name Type Mandatory Description

Intellectual property contract

Serialized name: intellectualpropertycontract Inherits Contract

Name Serialization name Type Mandatory Description

Generic Response

Serialized name: genericresponse

Name Serialization name Type Mandatory Description
Successful successful Boolean Mandatory Indicates a successfull result.
Information Messages informationmessages List<String> Optional
Warning Messages warningmessages List<String> Optional
Error Messages errormessages List<String> Optional

Generic Accept Response

Serialized name: genericacceptresponse Inherits Generic Response

Name Serialization name Type Mandatory Description
Accept accept Boolean Mandatory
Message message String Optional
Successful successful Boolean Mandatory Inherited from Generic Response. Indicates a successfull result.
Information Messages informationmessages List<String> Optional Inherited from Generic Response.
Warning Messages warningmessages List<String> Optional Inherited from Generic Response.
Error Messages errormessages List<String> Optional Inherited from Generic Response.

Signature

Serialized name: signature

Name Serialization name Type Mandatory Description
Message message String Mandatory
Signature signature List<Byte> Mandatory
Public certificate publiccertificate Certificate Mandatory

Entity Set Meta Attributes

Serialized name: entitysetmetaattributes

Name Serialization name Type Mandatory Description
Attributes attributes Dictionary<String> Mandatory Attribute value may contain string or decimal.

Entity Set Claimkey

Serialized name: entitysetclaimkey

Name Serialization name Type Mandatory Description
Claimkey claimkey String Mandatory

Resource

Serialized name: resource

Name Serialization name Type Mandatory Description
Path path Resource path Mandatory
Capabilities capabilities List<String> Mandatory
Meta Attributes metaattributes Dictionary<String> Optional Semi-static identifiers.
Supported Verbs supportedverbs List<Data verb> Mandatory Supported data verbs.

Resource access

Serialized name: resourceaccess

Name Serialization name Type Mandatory Description
Path path Resource path Mandatory
Subordinates subordinates Boolean Mandatory If set to true subordinate resources are applicable to this access right.
Verbs verbs List<Data verb> Mandatory
Window window Time frame Optional

Entity Set Resources

Serialized name: entitysetresources

Name Serialization name Type Mandatory Description
Resources resources List<Resource> Mandatory

Entity Remove Resources

Serialized name: entityremoveresources

Name Serialization name Type Mandatory Description
Remove all removeall Boolean Optional
Resources paths resourcespaths List<Resource path> Optional

Serialized name: legalentitycreateservice

Name Serialization name Type Mandatory Description
Attributes attributes Dictionary<String> Mandatory

Serialized name: legalentitysetservicecertificate

Name Serialization name Type Mandatory Description
Service signature servicesignature Signature Mandatory

Serialized name: legalentityclaimentityownership

Name Serialization name Type Mandatory Description
Claim Key claimkey String Mandatory
Vendor vendor String Mandatory

Serialized name: legalentitytransferownership

Name Serialization name Type Mandatory Description
Offered item offereditem Entity ID Mandatory
Offered to offeredto Entity ID Mandatory

Serialized name: legalentityownershipoffered

Name Serialization name Type Mandatory Description
Offered item offereditem Entity ID Mandatory
Offeree offeree Entity ID Mandatory

Serialized name: legalentitycreatecontract

Name Serialization name Type Mandatory Description
Contract proposal contractproposal Contract Mandatory

Serialized name: legalentitycontractoffered

Name Serialization name Type Mandatory Description
Contract proposal contractproposal Contract Mandatory

Serialized name: legalentityterminatecontract

Name Serialization name Type Mandatory Description
Contract ID contractid String Mandatory

Serialized name: legalentitycontractterminated

Name Serialization name Type Mandatory Description
Contract ID contractid String Mandatory

Entity Request Session

Serialized name: entityrequestsession

Name Serialization name Type Mandatory Description
Target entity targetentity Entity ID Mandatory
Resource access rights resourceaccessrights List<Resource access> Mandatory
Proposed IPR Contracts proposediprcontracts List<Intellectual property contract> Optional
Proposed Data transfer contract proposeddatatransfercontract Data transfer contract Optional
Session length sessionlength Integer Optional

Entity Request Session Response

Serialized name: entityrequestsessionresponse Inherits Generic Response

Name Serialization name Type Mandatory Description
Session ID sessionid String Optional Mandatory if response is successful.
Resource access rights resourceaccessrights List<Resource access> Optional
Proposed IPR Contracts proposediprcontracts List<Intellectual property contract> Optional
Proposed Data transfer contract proposeddatatransfercontract Data transfer contract Optional
Session length sessionlength Integer Optional
Successful successful Boolean Mandatory Inherited from Generic Response. Indicates a successfull result.
Information Messages informationmessages List<String> Optional Inherited from Generic Response.
Warning Messages warningmessages List<String> Optional Inherited from Generic Response.
Error Messages errormessages List<String> Optional Inherited from Generic Response.

Entity Start Session

Serialized name: entitystartsession

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory

Entity Reject Session

Serialized name: entityrejectsession

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory

Entity Start Session Response

Serialized name: entitystartsessionresponse Inherits Generic Response

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory Mandatory if response is successful.
Target address targetaddress Address Optional Mandatory if response is successful.
Successful successful Boolean Mandatory Inherited from Generic Response. Indicates a successfull result.
Information Messages informationmessages List<String> Optional Inherited from Generic Response.
Warning Messages warningmessages List<String> Optional Inherited from Generic Response.
Error Messages errormessages List<String> Optional Inherited from Generic Response.

Serialized name: legalentityrequestedaccess

Name Serialization name Type Mandatory Description
Resource access rights resourceaccessrights List<Resource access> Mandatory
Requestee Entity requesteeentity Entity ID Mandatory

Serialized name: legalentityrequestedaccessresponse Inherits Generic Response

Name Serialization name Type Mandatory Description
Accept accept Boolean Optional Mandatory if response is successful.
Resource access rights resourceaccessrights List<Resource access> Optional Mandatory if response is successful.
IPR Contracts iprcontracts List<Intellectual property contract> Optional
Session length sessionlength Integer Optional Mandatory if response is successful.
Successful successful Boolean Mandatory Inherited from Generic Response. Indicates a successfull result.
Information Messages informationmessages List<String> Optional Inherited from Generic Response.
Warning Messages warningmessages List<String> Optional Inherited from Generic Response.
Error Messages errormessages List<String> Optional Inherited from Generic Response.

Entity Session Started

Serialized name: entitysessionstarted

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory
Resource access rights resourceaccessrights List<Resource access> Mandatory
Session expires sessionexpires Timestamp Mandatory
Requestee address requesteeaddress Address Mandatory

Entity Terminate Session

Serialized name: entityterminatesession

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory

Entity Session Terminated

Serialized name: entitysessionterminated

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory

Entity Terminated Session

Serialized name: entityterminatedsession

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory

Schema

The schema for cdoxmpp is defined in the XML Schema language.

Warning

XML Schema cannot fully describe the protocol defined in this documentation.

Download

Schema file can be found here for download.

Listed

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:tns="urn:clayster:cdo" elementFormDefault="qualified" targetNamespace="urn:clayster:cdo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="string">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="string" type="tns:string" />
  <xs:simpleType name="boolean">
    <xs:restriction base="xs:boolean" />
  </xs:simpleType>
  <xs:element name="boolean" type="tns:boolean" />
  <xs:simpleType name="byte">
    <xs:restriction base="xs:byte" />
  </xs:simpleType>
  <xs:element name="byte" type="tns:byte" />
  <xs:simpleType name="integer">
    <xs:restriction base="xs:integer" />
  </xs:simpleType>
  <xs:element name="integer" type="tns:integer" />
  <xs:simpleType name="double">
    <xs:restriction base="xs:double" />
  </xs:simpleType>
  <xs:element name="double" type="tns:double" />
  <xs:simpleType name="decimal">
    <xs:restriction base="xs:decimal" />
  </xs:simpleType>
  <xs:element name="decimal" type="tns:decimal" />
  <xs:simpleType name="timestamp">
    <xs:restriction base="xs:dateTime" />
  </xs:simpleType>
  <xs:element name="timestamp" type="tns:timestamp" />
  <xs:simpleType name="timeframe">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="timeframe" type="tns:timeframe" />
  <xs:complexType name="dictionary">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1000" name="item">
        <xs:complexType>
          <xs:sequence>
            <xs:element minOccurs="1" maxOccurs="1" name="key">
              <xs:complexType>
                <xs:sequence>
                  <xs:any minOccurs="1" maxOccurs="1" namespace="urn:clayster:cdo" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element minOccurs="1" maxOccurs="1" name="value">
              <xs:complexType>
                <xs:sequence>
                  <xs:any minOccurs="1" maxOccurs="1" namespace="urn:clayster:cdo" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="dictionary" type="tns:dictionary">
    <xs:unique name="dictionary_uniquekeystring">
      <xs:selector xpath="tns:item/tns:key/tns:string" />
      <xs:field xpath="." />
    </xs:unique>
    <xs:unique name="dictionary_uniquekeyinteger">
      <xs:selector xpath="tns:item/tns:key/tns:integer" />
      <xs:field xpath="." />
    </xs:unique>
  </xs:element>
  <xs:complexType name="list">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="2000" namespace="urn:clayster:cdo" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="list" type="tns:list" />
  <xs:simpleType name="certificate">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="certificate" type="tns:certificate" />
  <xs:simpleType name="entityid">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="entityid" type="tns:entityid" />
  <xs:simpleType name="address">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="address" type="tns:address" />
  <xs:simpleType name="dataverb">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="dataverb" type="tns:dataverb" />
  <xs:simpleType name="resourcepath">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="resourcepath" type="tns:resourcepath" />
  <xs:simpleType name="external">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="external" type="tns:external" />
  <xs:complexType name="contract">
    <xs:sequence />
  </xs:complexType>
  <xs:element name="contract" type="tns:contract" />
  <xs:complexType name="datatransfercontract">
    <xs:sequence />
  </xs:complexType>
  <xs:element name="datatransfercontract" type="tns:datatransfercontract" />
  <xs:complexType name="proxycontract">
    <xs:sequence />
  </xs:complexType>
  <xs:element name="proxycontract" type="tns:proxycontract" />
  <xs:complexType name="intellectualpropertycontract">
    <xs:sequence />
  </xs:complexType>
  <xs:element name="intellectualpropertycontract" type="tns:intellectualpropertycontract" />
  <xs:complexType name="genericresponse">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="successful">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="informationmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="warningmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="errormessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="genericresponse" type="tns:genericresponse" />
  <xs:complexType name="genericacceptresponse">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="accept">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="message">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="successful">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="informationmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="warningmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="errormessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="genericacceptresponse" type="tns:genericacceptresponse" />
  <xs:complexType name="signature">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="message">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="signature">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="publiccertificate">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="certificate" type="tns:certificate" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="signature" type="tns:signature" />
  <xs:complexType name="entitysetmetaattributes">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="attributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="tns:dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysetmetaattributes" type="tns:entitysetmetaattributes" />
  <xs:complexType name="entitysetclaimkey">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="claimkey">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysetclaimkey" type="tns:entitysetclaimkey" />
  <xs:complexType name="resource">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="path">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="resourcepath" type="tns:resourcepath" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="capabilities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="metaattributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="tns:dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="supportedverbs">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="resource" type="tns:resource" />
  <xs:complexType name="resourceaccess">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="path">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="resourcepath" type="tns:resourcepath" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="subordinates">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="verbs">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="window">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timeframe" type="tns:timeframe" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="resourceaccess" type="tns:resourceaccess" />
  <xs:complexType name="entitysetresources">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="resources">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysetresources" type="tns:entitysetresources" />
  <xs:complexType name="entityremoveresources">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="removeall">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="resourcespaths">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityremoveresources" type="tns:entityremoveresources" />
  <xs:complexType name="legalentitycreateservice">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="attributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="tns:dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycreateservice" type="tns:legalentitycreateservice" />
  <xs:complexType name="legalentitysetservicecertificate">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="servicesignature">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="signature" type="tns:signature" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitysetservicecertificate" type="tns:legalentitysetservicecertificate" />
  <xs:complexType name="legalentityclaimentityownership">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="claimkey">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="vendor">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityclaimentityownership" type="tns:legalentityclaimentityownership" />
  <xs:complexType name="legalentitytransferownership">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="offereditem">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="tns:entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="offeredto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="tns:entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitytransferownership" type="tns:legalentitytransferownership" />
  <xs:complexType name="legalentityownershipoffered">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="offereditem">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="tns:entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="offeree">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="tns:entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityownershipoffered" type="tns:legalentityownershipoffered" />
  <xs:complexType name="legalentitycreatecontract">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractproposal">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="contract" type="tns:contract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycreatecontract" type="tns:legalentitycreatecontract" />
  <xs:complexType name="legalentitycontractoffered">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractproposal">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="contract" type="tns:contract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycontractoffered" type="tns:legalentitycontractoffered" />
  <xs:complexType name="legalentityterminatecontract">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityterminatecontract" type="tns:legalentityterminatecontract" />
  <xs:complexType name="legalentitycontractterminated">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycontractterminated" type="tns:legalentitycontractterminated" />
  <xs:complexType name="entityrequestsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="targetentity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="tns:entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposediprcontracts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposeddatatransfercontract">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="datatransfercontract" type="tns:datatransfercontract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="tns:integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityrequestsession" type="tns:entityrequestsession" />
  <xs:complexType name="entityrequestsessionresponse">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposediprcontracts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposeddatatransfercontract">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="datatransfercontract" type="tns:datatransfercontract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="tns:integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="successful">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="informationmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="warningmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="errormessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityrequestsessionresponse" type="tns:entityrequestsessionresponse" />
  <xs:complexType name="entitystartsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitystartsession" type="tns:entitystartsession" />
  <xs:complexType name="entityrejectsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityrejectsession" type="tns:entityrejectsession" />
  <xs:complexType name="entitystartsessionresponse">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="targetaddress">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="tns:address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="successful">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="informationmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="warningmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="errormessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitystartsessionresponse" type="tns:entitystartsessionresponse" />
  <xs:complexType name="legalentityrequestedaccess">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requesteeentity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="tns:entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityrequestedaccess" type="tns:legalentityrequestedaccess" />
  <xs:complexType name="legalentityrequestedaccessresponse">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="accept">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="iprcontracts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="tns:integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="successful">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="tns:boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="informationmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="warningmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="errormessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityrequestedaccessresponse" type="tns:legalentityrequestedaccessresponse" />
  <xs:complexType name="entitysessionstarted">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="tns:list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionexpires">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="tns:timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requesteeaddress">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="tns:address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysessionstarted" type="tns:entitysessionstarted" />
  <xs:complexType name="entityterminatesession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityterminatesession" type="tns:entityterminatesession" />
  <xs:complexType name="entitysessionterminated">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysessionterminated" type="tns:entitysessionterminated" />
  <xs:complexType name="entityterminatedsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="tns:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityterminatedsession" type="tns:entityterminatedsession" />
  <xs:element name="actionrequest">
    <xs:complexType>
      <xs:sequence>
        <xs:any minOccurs="1" maxOccurs="1" namespace="urn:clayster:cdo" />
      </xs:sequence>
      <xs:attribute name="timeouts" type="tns:timestamp" use="required" />
      <xs:attribute name="acktimeouts" type="tns:timestamp" use="required" />
      <xs:attribute name="name" type="tns:string" use="required" />
      <xs:attribute name="id" type="tns:string" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="actionresponse">
    <xs:complexType>
      <xs:sequence>
        <xs:any minOccurs="1" maxOccurs="1" namespace="urn:clayster:cdo" />
      </xs:sequence>
      <xs:attribute name="name" type="tns:string" use="required" />
      <xs:attribute name="id" type="tns:string" use="required" />
    </xs:complexType>
  </xs:element>
</xs:schema>