Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='chess' board='8x8' color='white'>
	<timelimit>600</timelimit>   -- for all players
	<timelimit color='black'>10</timelimit>  
                                     -- if on black side played Kasparov
	<initboard>
	    <set pos='0,0' color='white' type='rook'/>
	    <set pos='1,0' color='white' type='knight'/>
	</initboard>
    </create>
</iq>

Positive response:

<iq type='result' to='x@y.z' id='id1'>
    <create xmlns='games:board' type='chess' id='123'/>
</iq>

or simply <iq type='result' id='id1'/>?



Move:

<iq type='set' to='a@b.c' id='id2'>
    <turn xmlns='games:board' type='chess' id='123'>
	<move pos='1,6;1,7'>
	    <promotion>queen</promotion>
	</move>
    </turn>
</iq>

'pos' attribute contain column-separated list of coordinates of piece, that
moved from first to last one.  Coordinate is a comma-separated list of
integers >= 0.

Each turn can have few <move> tags.

Proposing draw:

<iq type='set' to='a@b.c' id='id3'>
    <turn xmlns='games:board' type='chess' id='123'>
	<move pos='1,6;1,7'/>
	<draw/>
    </turn>
</iq>

Accepting draw proposal:

<iq type='set' to='a@b.c' id='id4'>
    <turn xmlns='games:board' type='chess' id='123'>
	<accept/>
    </turn>
</iq>

Resigning:

<iq type='set' to='a@b.c' id='id5'>
    <turn xmlns='games:board' type='chess' id='123'>
	<resign/>
    </turn>
</iq>

Also we need <put pos='2,10'/> and <destroy pos='2,10'/> tags for games where
we must put or remove pieces.  <put/> can have 'type' and 'color'
attributes.

move, put & destroy tags can have some game-specific subtags



Response:

<iq type='result' to='x@y.z' id='id2'/>

if move accepted, or error 'Not Allowed' if other side think that this move
illegal (to avoid evil hackers that write clients that can do few moves instead
of one or can move King like Queen)





