There will be 2 parts for now:

  • website to register
  • web api for the app

Registration:

  • go to website, enter email and 2x password, [receive activation token, activate]

Web api:

  • authentication - basic http (http://en.wikipedia.org/wiki/Basic_access_authentication)
  • commands
    • Push game puzzles and collect statistics (Sorry gents, slight change of plans. this will be first feature to market. It doesn't change anything though)
    • get current games for you
    • do move
    • create game
    • get active users (HOW DOES ONE CHOSES AN OPPONENT?)
    • get user's stat
    • allow user's to kill uncompleted games (WHAT WILL HAPPEN IF OPPONENT DOES NOT CARE TO FINISH THE GAME?)
    • keep rating (???)

get current game(s) for you:

  • command going to a specific url contains credentials by means of basic http authentication and potentially id of specific board
  • response in xml format:
    <games>
     <game id="XXX" opponent="YYY" state="[new|started|youwon|youlost|pat]" [starttime=""] [endtime=""] yourcolor="black|white" yourturn="true|false">FEN Description</game>
     ...
    </games>

do move command:

  • command going to a specific url contains credentials by means of basic http authentication
  • posted variables containing:
    • board id
    • new FEN description
    • move made
    • optional state update (checkmate, whatever) - response is just an ack

create a game command:

  • command going to a specific url contains credentials by means of basic http authentication - get parameter with username of an opponent
  • response is ack or nack depending on whether username exists

get active users

  • command going to a specific url contains credentials by means of basic http authentication
  • get list of active user
  • response in xml format:
    <users>
      <id=""">
      <user-stat>
          ....
       </user-stat>
    </users>
    
    

get user's stat

  • command going to a specific url contains credentials by means of basic http authentication
  • response in xml format:
    <user-stat>
      <played="###" white="###" black="###" won="###" lost="###" uncompleted="###" rating="###">
    </user-stat>
    

On-Line/Realtime Chess

Of Possible Interest