Skip to content

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="1f6d5353-0cfc-4f47-94f5-482417e0d26d" 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="1f6d5353-0cfc-4f47-94f5-482417e0d26d" 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="3784569f-a522-49e4-902c-7ded9c604a29" 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="3784569f-a522-49e4-902c-7ded9c604a29" 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="df381a73-6eeb-46da-aab0-0d211b7367c3" 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="df381a73-6eeb-46da-aab0-0d211b7367c3" 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="d2ec85bd-7bb3-49c4-818f-65ee41e18072" 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="d2ec85bd-7bb3-49c4-818f-65ee41e18072" 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="d9499cba-162a-4cc7-bb0f-c1284d8ffeb4" 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="d9499cba-162a-4cc7-bb0f-c1284d8ffeb4" 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

Overview
Successfull transfer of ownership

Successfull transfer of 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 Legal Entity Transfer Ownership Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="transferownership" id="dce74f33-9c2a-413d-bbba-f51f1d031bc9" 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>
      <!--Optional field Terminate active sessions-->
      <terminateactivesessions>
        <boolean>..</boolean>
      </terminateactivesessions>
    </legalentitytransferownership>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="transferownership" id="dce74f33-9c2a-413d-bbba-f51f1d031bc9" xmlns="urn:clayster:cdo">
    <legalentitytransferownershipresponse>
      <!--Optional field Transfer ID-->
      <transferid>
        <string>..</string>
      </transferid>
      <!--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>
    </legalentitytransferownershipresponse>
  </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 Legal Entity Ownership Offered Response

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="ownershipoffered" id="afa26125-730a-48ea-b9c3-b14dbad549b8" 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>
      <!--Optional field Offeree Name-->
      <offereename>
        <string>..</string>
      </offereename>
      <!--Optional field Offered item Name-->
      <offereditemname>
        <string>..</string>
      </offereditemname>
      <!--Optional field Offered item Vendor-->
      <offereditemvendor>
        <string>..</string>
      </offereditemvendor>
      <!--Mandatory field Transfer ID-->
      <transferid>
        <string>..</string>
      </transferid>
    </legalentityownershipoffered>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="ownershipoffered" id="afa26125-730a-48ea-b9c3-b14dbad549b8" xmlns="urn:clayster:cdo">
    <legalentityownershipofferedresponse>
      <!--Mandatory field Transfer ID-->
      <transferid>
        <string>..</string>
      </transferid>
      <!--Inherited from Generic Accept Response-->
      <!--Mandatory field Accept-->
      <accept>
        <boolean>..</boolean>
      </accept>
      <!--Optional field Message-->
      <message>
        <string>..</string>
      </message>
    </legalentityownershipofferedresponse>
  </actionresponse>
</message>
Transfer ownership completed

Transfer ownership result. Result indicates wether transfer was successfull or not.

Serialized name: transferownershipcompleted

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

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="transferownershipcompleted" id="74564e7d-d321-43a9-aace-066d66dc38dc" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitytransferownershipcompleted>
      <!--Optional field Transfer ID-->
      <transferid>
        <string>..</string>
      </transferid>
      <!--Inherited from Generic Accept Response-->
      <!--Mandatory field Accept-->
      <accept>
        <boolean>..</boolean>
      </accept>
      <!--Optional field Message-->
      <message>
        <string>..</string>
      </message>
    </legalentitytransferownershipcompleted>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="transferownershipcompleted" id="74564e7d-d321-43a9-aace-066d66dc38dc" 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 termination

Terminate transfer ownership

Terminate ownership transfer.

Serialized name: terminatetransferownership

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

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="terminatetransferownership" id="ea3c8c9f-f948-4ea5-99e7-e57aaf02a802" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentityterminatetransferownership>
      <!--Mandatory field Transfer ID-->
      <transferid>
        <string>..</string>
      </transferid>
    </legalentityterminatetransferownership>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="terminatetransferownership" id="ea3c8c9f-f948-4ea5-99e7-e57aaf02a802" 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 terminated

Transfer ownership has been terminated.

Serialized name: transferownershipterminated

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

Example xml:

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionrequest name="transferownershipterminated" id="de3386c2-8362-4929-89e0-a0a1d123c1bd" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitytransferownershipterminated>
      <!--Mandatory field Transfer ID-->
      <transferid>
        <string>..</string>
      </transferid>
    </legalentitytransferownershipterminated>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="transferownershipterminated" id="de3386c2-8362-4929-89e0-a0a1d123c1bd" 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>

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="66673f0f-6280-4b34-ad59-c28762eb920b" 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="66673f0f-6280-4b34-ad59-c28762eb920b" 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="5c78a565-e01d-4c8c-9605-9954b8297749" 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="5c78a565-e01d-4c8c-9605-9954b8297749" 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="094c512f-bcc5-463c-a0fe-c25f33a95376" 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="094c512f-bcc5-463c-a0fe-c25f33a95376" 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="3913136c-1643-4ab5-ace0-66c92e1dd83b" 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="3913136c-1643-4ab5-ace0-66c92e1dd83b" 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 prerequisites

Set session termination endpoints

This action registers termination endpoints that may be used for networking and billing. Warning Do not register addresses not owned/controlled by the legal entity.

Serialized name: setsessionterminationendpoints

From To Data object
Legal Entity Orchestrator Legal Entity Set Session Termination Endpoints
Orchestrator Legal Entity Generic Response

Example xml:

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionrequest name="setsessionterminationendpoints" id="8163b6af-6ab1-4ab2-bd05-cb89168810ba" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentitysetsessionterminationendpoints>
      <!--Optional field Endpoints-->
      <endpoints>
        <list>..</list>
      </endpoints>
    </legalentitysetsessionterminationendpoints>
  </actionrequest>
</message>

<message from="cdo.example.com" to="legalentity@legalentities.example.com">
  <actionresponse name="setsessionterminationendpoints" id="8163b6af-6ab1-4ab2-bd05-cb89168810ba" 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

Session establishment

Overview
Successfull session establishment

Successfull session 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="bfd1b5ce-400c-479e-8e07-c707719a1dbc" 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>
      <!--Optional field Transfer protocols-->
      <transferprotocols>
        <list>..</list>
      </transferprotocols>
    </entityrequestsession>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="requestsession" id="bfd1b5ce-400c-479e-8e07-c707719a1dbc" 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="6c69061b-bd1f-42f4-a285-0809d07d769e" 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="6c69061b-bd1f-42f4-a285-0809d07d769e" 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="3af96419-3646-4820-b907-3dd1beb03620" 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="3af96419-3646-4820-b907-3dd1beb03620" 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="d4f7d386-6cfc-4d0a-bef2-a703390f3fa4" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <legalentityrequestedaccess>
      <!--Mandatory field Target Owner-->
      <targetowner>
        <entityid>..</entityid>
      </targetowner>
      <!--Mandatory field Target Entity-->
      <targetentity>
        <entityid>..</entityid>
      </targetentity>
      <!--Mandatory field Requestee Owner-->
      <requesteeowner>
        <entityid>..</entityid>
      </requesteeowner>
      <!--Mandatory field Requestee Entity-->
      <requesteeentity>
        <entityid>..</entityid>
      </requesteeentity>
      <!--Optional field Requestee Name-->
      <requesteename>
        <string>..</string>
      </requesteename>
      <!--Optional field Requestee Vendor-->
      <requesteevendor>
        <string>..</string>
      </requesteevendor>
      <!--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>
    </legalentityrequestedaccess>
  </actionrequest>
</message>

<message from="legalentity@legalentities.example.com" to="cdo.example.com">
  <actionresponse name="requestaccess" id="d4f7d386-6cfc-4d0a-bef2-a703390f3fa4" 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="9a203740-1553-4a4c-9f21-82daa310d835" 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>
      <!--Optional field Transfer protocols-->
      <transferprotocols>
        <list>..</list>
      </transferprotocols>
    </entitysessionstarted>
  </actionrequest>
</message>

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionresponse name="sessionstarted" id="9a203740-1553-4a4c-9f21-82daa310d835" 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="49ab64b2-f57a-44e1-a060-75375cab853d" 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="49ab64b2-f57a-44e1-a060-75375cab853d" 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="8e20f021-1c25-4f6b-b74f-f740828a6501" 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="8e20f021-1c25-4f6b-b74f-f740828a6501" 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>

Search items

Search

This action describes how entities can search the CDO registry. Entities can search for other entities, resources or sessions.

Serialized name: search

From To Data object
Entity Orchestrator Entity Search
Orchestrator Entity Entity Search Response

Example xml:

<message from="entity@entities.example.com" to="cdo.example.com">
  <actionrequest name="search" id="be248d8c-f8e8-440c-9f84-2d7e60fe060a" timeouts="2020-05-30T09:30:10Z" acktimeouts="2020-05-30T09:00:00Z" xmlns="urn:clayster:cdo">
    <entitysearch>
      <!--Optional field Search Entities-->
      <searchentities>
        <entitysearchparameters>
          <!--Optional field Owner-->
          <owner>
            <entityid>..</entityid>
          </owner>
          <!--Optional field Entity-->
          <entity>
            <entityid>..</entityid>
          </entity>
        </entitysearchparameters>
      </searchentities>
      <!--Optional field Search Resources-->
      <searchresources>
        <resourcesearchparameters>
          <!--Optional field Owner-->
          <owner>
            <entityid>..</entityid>
          </owner>
          <!--Optional field Entity-->
          <entity>
            <entityid>..</entityid>
          </entity>
          <!--Optional field Path-->
          <path>
            <resourcepath>..</resourcepath>
          </path>
          <!--Optional field Name-->
          <name>
            <string>..</string>
          </name>
          <!--Optional field Description-->
          <description>
            <string>..</string>
          </description>
          <!--Optional field Capabilities-->
          <capabilities>
            <list>..</list>
          </capabilities>
          <!--Optional field Meta Attributes-->
          <metaattributes>
            <dictionary>..</dictionary>
          </metaattributes>
          <!--Optional field Supported Verbs-->
          <supportedverbs>
            <list>..</list>
          </supportedverbs>
          <!--Optional field Subordinates-->
          <subordinates>
            <boolean>..</boolean>
          </subordinates>
        </resourcesearchparameters>
      </searchresources>
      <!--Optional field Search Sessions-->
      <searchsessions>
        <sessionsearchparameters>
          <!--Optional field Session ID-->
          <sessionid>
            <string>..</string>
          </sessionid>
          <!--Optional field Source-->
          <source>
            <entityid>..</entityid>
          </source>
          <!--Optional field Requestee-->
          <requestee>
            <entityid>..</entityid>
          </requestee>
          <!--Optional field Address-->
          <address>
            <address>..</address>
          </address>
          <!--Optional field Active-->
          <active>
            <boolean>..</boolean>
          </active>
          <!--Optional field Window-->
          <window>
            <timeframe>..</timeframe>
          </window>
          <!--Optional field Search As Requestee-->
          <searchasrequestee>
            <boolean>..</boolean>
          </searchasrequestee>
        </sessionsearchparameters>
      </searchsessions>
      <!--Optional field Search Accounts-->
      <searchaccounts>
        <accountsearchparameters>
          <!--Optional field Account ID-->
          <accountid>
            <string>..</string>
          </accountid>
        </accountsearchparameters>
      </searchaccounts>
      <!--Mandatory field Max Items-->
      <maxitems>
        <integer>..</integer>
      </maxitems>
      <!--Mandatory field Startindex-->
      <startindex>
        <integer>..</integer>
      </startindex>
    </entitysearch>
  </actionrequest>
</message>

<message from="cdo.example.com" to="entity@entities.example.com">
  <actionresponse name="search" id="be248d8c-f8e8-440c-9f84-2d7e60fe060a" xmlns="urn:clayster:cdo">
    <entitysearchresponse>
      <!--Mandatory field Returned Items-->
      <returneditems>
        <integer>..</integer>
      </returneditems>
      <!--Mandatory field Total Items-->
      <totalitems>
        <integer>..</integer>
      </totalitems>
      <!--Optional field Entities Found-->
      <entitiesfound>
        <list>..</list>
      </entitiesfound>
      <!--Optional field Resources Found-->
      <resourcesfound>
        <list>..</list>
      </resourcesfound>
      <!--Optional field Sessions Found-->
      <sessionsfound>
        <list>..</list>
      </sessionsfound>
      <!--Optional field Accounts Found-->
      <accountsfound>
        <list>..</list>
      </accountsfound>
      <!--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>
    </entitysearchresponse>
  </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>

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: legalentitysetsessionterminationendpoints

Name Serialization name Type Mandatory Description
Endpoints endpoints List<String> Optional Endpoints in the format of ip:port. Non existant endpoints or missing Endpoints field results in clearance.

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
Terminate active sessions terminateactivesessions Boolean Optional

Serialized name: legalentitytransferownershipresponse Inherits Generic Response

Name Serialization name Type Mandatory Description
Transfer ID transferid String Optional Mandatory if succesful response.
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: legalentitytransferownershipcompleted Inherits Generic Accept Response

Name Serialization name Type Mandatory Description
Transfer ID transferid String Optional Mandatory if succesful response.
Accept accept Boolean Mandatory Inherited from Generic Accept Response.
Message message String Optional Inherited from Generic Accept Response.
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: legalentityownershipoffered

Name Serialization name Type Mandatory Description
Offered item offereditem Entity ID Mandatory
Offeree offeree Entity ID Mandatory
Offeree Name offereename String Optional
Offered item Name offereditemname String Optional
Offered item Vendor offereditemvendor String Optional
Transfer ID transferid String Mandatory

Serialized name: legalentityownershipofferedresponse Inherits Generic Accept Response

Name Serialization name Type Mandatory Description
Transfer ID transferid String Mandatory
Accept accept Boolean Mandatory Inherited from Generic Accept Response.
Message message String Optional Inherited from Generic Accept Response.
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: legalentityterminatetransferownership

Name Serialization name Type Mandatory Description
Transfer ID transferid String Mandatory

Serialized name: legalentitytransferownershipterminated

Name Serialization name Type Mandatory Description
Transfer ID transferid String 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

Transfer protocol

Serialized name: transferprotocol

Name Serialization name Type Mandatory Description
carrierprotocol carrierprotocol String Mandatory Name of carrier protocol - ie HTTP, HTTPS, XMPP etc
protocol protocol String Mandatory Name of protocol used inside carrier protocol - ie schema names, LWTSD etc
attributes attributes Dictionary<String, String> Mandatory Connection attributes such as endpoints, realm, credentials and any other meta data required

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
Transfer protocols transferprotocols List<Transfer protocol> 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
Target Owner targetowner Entity ID Mandatory
Target Entity targetentity Entity ID Mandatory
Requestee Owner requesteeowner Entity ID Mandatory
Requestee Entity requesteeentity Entity ID Mandatory
Requestee Name requesteename String Optional
Requestee Vendor requesteevendor String Optional
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

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
Transfer protocols transferprotocols List<Transfer protocol> Optional

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

Resource Search Object

Serialized name: resourcesearchobject Inherits Resource

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

Entity Search Object

Serialized name: entitysearchobject

Name Serialization name Type Mandatory Description
Entity entity Entity ID Mandatory
Name name String Optional
Description description String Optional
Meta Attributes metaattributes Dictionary<String> Optional
Legal legal Boolean Optional

Session Search Object

Serialized name: sessionsearchobject

Name Serialization name Type Mandatory Description
Session ID sessionid String Mandatory
Source source Entity ID Mandatory
Requestee requestee Entity ID Mandatory
Address address Address Mandatory
Expires expires Timestamp Mandatory
Start Time starttime Timestamp Mandatory
Stop Time stoptime Timestamp Mandatory
Rejected rejected Boolean Mandatory
Source address sourceaddress Address Mandatory
Requestee address requesteeaddress Address Mandatory
Resource access rights resourceaccessrights List<Resource access> Mandatory
Transfer protocols transferprotocols List<Transfer protocol> Optional

Account Search Object

Serialized name: accountsearchobject

Name Serialization name Type Mandatory Description
Account ID accountid String Mandatory
Entity entity Entity ID Mandatory
Name name String Optional

Entity Search Parameters

Serialized name: entitysearchparameters

Name Serialization name Type Mandatory Description
Owner owner Entity ID Optional
Entity entity Entity ID Optional

Account Search Parameters

Serialized name: accountsearchparameters

Name Serialization name Type Mandatory Description
Account ID accountid String Optional

Resource Search Parameters

Serialized name: resourcesearchparameters

Name Serialization name Type Mandatory Description
Owner owner Entity ID Optional
Entity entity Entity ID Optional
Path path Resource path Optional
Name name String Optional
Description description String Optional
Capabilities capabilities List<String> Optional
Meta Attributes metaattributes Dictionary<String> Optional Semi-static identifiers.
Supported Verbs supportedverbs List<Data verb> Optional Supported data verbs.
Subordinates subordinates Boolean Optional

Session Search Parameters

Serialized name: sessionsearchparameters

Name Serialization name Type Mandatory Description
Session ID sessionid String Optional
Source source Entity ID Optional
Requestee requestee Entity ID Optional
Address address Address Optional
Active active Boolean Optional
Window window Time frame Optional
Search As Requestee searchasrequestee Boolean Optional

Serialized name: entitysearch

Name Serialization name Type Mandatory Description
Search Entities searchentities Entity Search Parameters Optional
Search Resources searchresources Resource Search Parameters Optional
Search Sessions searchsessions Session Search Parameters Optional
Search Accounts searchaccounts Account Search Parameters Optional
Max Items maxitems Integer Mandatory
Startindex startindex Integer Mandatory

Entity Search Response

Serialized name: entitysearchresponse Inherits Generic Response

Name Serialization name Type Mandatory Description
Returned Items returneditems Integer Mandatory
Total Items totalitems Integer Mandatory
Entities Found entitiesfound List<Entity Search Object> Optional
Resources Found resourcesfound List<Resource Search Object> Optional
Sessions Found sessionsfound List<Session Search Object> Optional
Accounts Found accountsfound List<Account Search Object> 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.

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 for cdoxmpp can be found here for download.

Schema file for primitives can be found here for download.

Schema file for actions can be found here for download.

Schema file for contracts can be found here for download.

Listed

CDOXMPP

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns="urn:clayster:cdo" elementFormDefault="qualified" targetNamespace="urn:clayster:cdo" version="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="cdo-primitives.xsd" />
  <xs:include schemaLocation="cdo-actions.xsd" />
  <xs:include schemaLocation="cdo-contracts.xsd" />
  <xs:complexType name="entitysetmetaattributes">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="attributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysetmetaattributes" type="entitysetmetaattributes" />
  <xs:complexType name="entitysetclaimkey">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="claimkey">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysetclaimkey" type="entitysetclaimkey" />
  <xs:complexType name="resource">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="path">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="resourcepath" type="resourcepath" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="capabilities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="metaattributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="supportedverbs">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="resource" type="resource" />
  <xs:complexType name="resourceaccess">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="path">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="resourcepath" type="resourcepath" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="subordinates">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="verbs">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="window">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timeframe" type="timeframe" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="resourceaccess" type="resourceaccess" />
  <xs:complexType name="entitysetresources">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="resources">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysetresources" type="entitysetresources" />
  <xs:complexType name="entityremoveresources">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="removeall">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="resourcespaths">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityremoveresources" type="entityremoveresources" />
  <xs:complexType name="legalentitysetsessionterminationendpoints">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="endpoints">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitysetsessionterminationendpoints" type="legalentitysetsessionterminationendpoints" />
  <xs:complexType name="legalentityclaimentityownership">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="claimkey">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="vendor">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityclaimentityownership" type="legalentityclaimentityownership" />
  <xs:complexType name="legalentitytransferownership">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="offereditem">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="offeredto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="terminateactivesessions">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitytransferownership" type="legalentitytransferownership" />
  <xs:complexType name="legalentitytransferownershipresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericresponse">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="transferid">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="string" type="string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="legalentitytransferownershipresponse" type="legalentitytransferownershipresponse" />
  <xs:complexType name="legalentitytransferownershipcompleted">
    <xs:complexContent mixed="false">
      <xs:extension base="genericacceptresponse">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="transferid">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="string" type="string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="legalentitytransferownershipcompleted" type="legalentitytransferownershipcompleted" />
  <xs:complexType name="legalentityownershipoffered">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="offereditem">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="offeree">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="offereename">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="offereditemname">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="offereditemvendor">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="transferid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityownershipoffered" type="legalentityownershipoffered" />
  <xs:complexType name="legalentityownershipofferedresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericacceptresponse">
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="transferid">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="string" type="string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="legalentityownershipofferedresponse" type="legalentityownershipofferedresponse" />
  <xs:complexType name="legalentityterminatetransferownership">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="transferid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityterminatetransferownership" type="legalentityterminatetransferownership" />
  <xs:complexType name="legalentitytransferownershipterminated">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="transferid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitytransferownershipterminated" type="legalentitytransferownershipterminated" />
  <xs:complexType name="legalentitycreatecontract">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractproposal">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="contract" type="contract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycreatecontract" type="legalentitycreatecontract" />
  <xs:complexType name="legalentitycontractoffered">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractproposal">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="contract" type="contract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycontractoffered" type="legalentitycontractoffered" />
  <xs:complexType name="legalentityterminatecontract">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityterminatecontract" type="legalentityterminatecontract" />
  <xs:complexType name="legalentitycontractterminated">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="contractid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentitycontractterminated" type="legalentitycontractterminated" />
  <xs:complexType name="transferprotocol">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="carrierprotocol">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="protocol">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="attributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="transferprotocol" type="transferprotocol" />
  <xs:complexType name="entityrequestsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="targetentity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposediprcontracts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposeddatatransfercontract">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="datatransfercontract" type="datatransfercontract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="transferprotocols">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityrequestsession" type="entityrequestsession" />
  <xs:complexType name="entityrequestsessionresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericresponse">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="sessionid">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="string" type="string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="resourceaccessrights">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="proposediprcontracts">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="proposeddatatransfercontract">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="datatransfercontract" type="datatransfercontract" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="integer" type="integer" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="entityrequestsessionresponse" type="entityrequestsessionresponse" />
  <xs:complexType name="entitystartsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitystartsession" type="entitystartsession" />
  <xs:complexType name="entityrejectsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityrejectsession" type="entityrejectsession" />
  <xs:complexType name="entitystartsessionresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericresponse">
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="string" type="string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="targetaddress">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="address" type="address" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="entitystartsessionresponse" type="entitystartsessionresponse" />
  <xs:complexType name="legalentityrequestedaccess">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="targetowner">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="targetentity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requesteeowner">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requesteeentity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="requesteename">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="requesteevendor">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposediprcontracts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="proposeddatatransfercontract">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="datatransfercontract" type="datatransfercontract" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="legalentityrequestedaccess" type="legalentityrequestedaccess" />
  <xs:complexType name="legalentityrequestedaccessresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericresponse">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="accept">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="boolean" type="boolean" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="resourceaccessrights">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="iprcontracts">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="sessionlength">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="integer" type="integer" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="legalentityrequestedaccessresponse" type="legalentityrequestedaccessresponse" />
  <xs:complexType name="entitysessionstarted">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionexpires">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requesteeaddress">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="transferprotocols">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysessionstarted" type="entitysessionstarted" />
  <xs:complexType name="entityterminatesession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityterminatesession" type="entityterminatesession" />
  <xs:complexType name="entitysessionterminated">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysessionterminated" type="entitysessionterminated" />
  <xs:complexType name="entityterminatedsession">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entityterminatedsession" type="entityterminatedsession" />
  <xs:complexType name="resourcesearchobject">
    <xs:complexContent mixed="false">
      <xs:extension base="resource">
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="entity">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="entityid" type="entityid" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="resourcesearchobject" type="resourcesearchobject" />
  <xs:complexType name="entitysearchobject">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="entity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="name">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="description">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="metaattributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="legal">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysearchobject" type="entitysearchobject" />
  <xs:complexType name="sessionsearchobject">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="source">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requestee">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="address">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="expires">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="starttime">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="stoptime">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="rejected">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="sourceaddress">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="requesteeaddress">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="resourceaccessrights">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="transferprotocols">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="sessionsearchobject" type="sessionsearchobject" />
  <xs:complexType name="accountsearchobject">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="accountid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="entity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="name">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="accountsearchobject" type="accountsearchobject" />
  <xs:complexType name="entitysearchparameters">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="owner">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="entity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysearchparameters" type="entitysearchparameters" />
  <xs:complexType name="accountsearchparameters">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="accountid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="accountsearchparameters" type="accountsearchparameters" />
  <xs:complexType name="resourcesearchparameters">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="owner">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="entity">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="path">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="resourcepath" type="resourcepath" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="name">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="description">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="capabilities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="metaattributes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dictionary" type="dictionary" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="supportedverbs">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="subordinates">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="resourcesearchparameters" type="resourcesearchparameters" />
  <xs:complexType name="sessionsearchparameters">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="sessionid">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="source">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="requestee">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entityid" type="entityid" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="address">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="address" type="address" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="active">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="window">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timeframe" type="timeframe" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="searchasrequestee">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="sessionsearchparameters" type="sessionsearchparameters" />
  <xs:complexType name="entitysearch">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="searchentities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entitysearchparameters" type="entitysearchparameters" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="searchresources">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="resourcesearchparameters" type="resourcesearchparameters" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="searchsessions">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="sessionsearchparameters" type="sessionsearchparameters" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="searchaccounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="accountsearchparameters" type="accountsearchparameters" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="maxitems">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="startindex">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="integer" type="integer" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="entitysearch" type="entitysearch" />
  <xs:complexType name="entitysearchresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericresponse">
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="returneditems">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="integer" type="integer" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="1" maxOccurs="1" name="totalitems">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="integer" type="integer" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="entitiesfound">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="resourcesfound">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="sessionsfound">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="accountsfound">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="list" type="list" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="entitysearchresponse" type="entitysearchresponse" />
</xs:schema>

PRIMITIVES

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema elementFormDefault="qualified" version="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="string">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="string" type="string" />
  <xs:simpleType name="boolean">
    <xs:restriction base="xs:boolean" />
  </xs:simpleType>
  <xs:element name="boolean" type="boolean" />
  <xs:simpleType name="byte">
    <xs:restriction base="xs:byte" />
  </xs:simpleType>
  <xs:element name="byte" type="byte" />
  <xs:simpleType name="integer">
    <xs:restriction base="xs:integer" />
  </xs:simpleType>
  <xs:element name="integer" type="integer" />
  <xs:simpleType name="double">
    <xs:restriction base="xs:double" />
  </xs:simpleType>
  <xs:element name="double" type="double" />
  <xs:simpleType name="decimal">
    <xs:restriction base="xs:decimal" />
  </xs:simpleType>
  <xs:element name="decimal" type="decimal" />
  <xs:simpleType name="timestamp">
    <xs:restriction base="xs:dateTime" />
  </xs:simpleType>
  <xs:element name="timestamp" type="timestamp" />
  <xs:complexType name="timeframe">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="from">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="to">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="timestamp" type="timestamp" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="timeframe" type="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="##targetNamespace" />
                </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="##targetNamespace" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="dictionary" type="dictionary">
    <xs:unique name="dictionary_uniquekeystring">
      <xs:selector xpath="item/key/string" />
      <xs:field xpath="." />
    </xs:unique>
    <xs:unique name="dictionary_uniquekeyinteger">
      <xs:selector xpath="item/key/integer" />
      <xs:field xpath="." />
    </xs:unique>
  </xs:element>
  <xs:complexType name="list">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="2000" namespace="##targetNamespace" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="list" type="list" />
  <xs:simpleType name="certificate">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="certificate" type="certificate" />
  <xs:simpleType name="entityid">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="entityid" type="entityid" />
  <xs:simpleType name="address">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="address" type="address" />
  <xs:simpleType name="dataverb">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="dataverb" type="dataverb" />
  <xs:simpleType name="resourcepath">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="resourcepath" type="resourcepath" />
  <xs:simpleType name="external">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:element name="external" type="external" />
</xs:schema>

ACTIONS

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema elementFormDefault="qualified" version="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="cdo-primitives.xsd" />
  <xs:complexType name="actionrequest">
    <xs:sequence>
      <xs:any minOccurs="1" maxOccurs="1" namespace="##targetNamespace" />
    </xs:sequence>
    <xs:attribute name="timeouts" type="timestamp" use="required" />
    <xs:attribute name="acktimeouts" type="timestamp" use="required" />
    <xs:attribute name="name" type="string" use="required" />
    <xs:attribute name="id" type="string" use="required" />
  </xs:complexType>
  <xs:element name="actionrequest" type="actionrequest" />
  <xs:complexType name="actionresponse">
    <xs:sequence>
      <xs:any minOccurs="1" maxOccurs="1" namespace="##targetNamespace" />
    </xs:sequence>
    <xs:attribute name="name" type="string" use="required" />
    <xs:attribute name="id" type="string" use="required" />
  </xs:complexType>
  <xs:element name="actionresponse" type="actionresponse" />
  <xs:complexType name="acknowledgement">
    <xs:attribute name="id" type="string" use="required" />
  </xs:complexType>
  <xs:element name="acknowledgement" type="acknowledgement" />
  <xs:complexType name="genericresponse">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="successful">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="boolean" type="boolean" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="informationmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="warningmessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="errormessages">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="genericresponse" type="genericresponse" />
  <xs:complexType name="genericacceptresponse">
    <xs:complexContent mixed="false">
      <xs:extension base="genericresponse">
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="accept">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="boolean" type="boolean" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" maxOccurs="1" name="message">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="string" type="string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="genericacceptresponse" type="genericacceptresponse" />
</xs:schema>

CONTRACTS

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema elementFormDefault="qualified" version="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="cdo-primitives.xsd" />
  <xs:complexType name="contract" />
  <xs:element name="contract" type="contract" />
  <xs:complexType name="datatransfercontract">
    <xs:complexContent mixed="false">
      <xs:extension base="contract" />
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="datatransfercontract" type="datatransfercontract" />
  <xs:complexType name="proxycontract">
    <xs:complexContent mixed="false">
      <xs:extension base="contract" />
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="proxycontract" type="proxycontract" />
  <xs:complexType name="intellectualpropertycontract">
    <xs:complexContent mixed="false">
      <xs:extension base="contract" />
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="intellectualpropertycontract" type="intellectualpropertycontract" />
  <xs:complexType name="signature">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="message">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="string" type="string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="signature">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="list" type="list" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="1" maxOccurs="1" name="publiccertificate">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="certificate" type="certificate" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="signature" type="signature" />
</xs:schema>