{
  "endpoints": {
    "api": {
      "add_message": "/api/message (POST)", 
      "chatbot": {
        "clear": "/api/chatbot/conversations?sessionId=xxx (DELETE)", 
        "history": "/api/chatbot/conversations?sessionId=xxx (GET)", 
        "message": "/api/chatbot/message (POST)"
      }, 
      "ebook": {
        "bookmark": {
          "add": "/api/ebook/bookmark (POST)", 
          "delete": "/api/ebook/bookmark/delete (DELETE)", 
          "list": "/api/ebook/bookmark/list (GET)"
        }, 
        "delete": "/api/ebook/delete (DELETE)", 
        "list": "/api/ebook/list (GET)", 
        "progress": "/api/ebook/progress (POST)", 
        "read": "/api/ebook/read (GET)", 
        "upload": "/api/ebook/upload (POST)"
      }, 
      "fragments": {
        "audios": {
          "delete": "/api/fragments/audios/<audio_id> (DELETE)", 
          "get": "/api/fragments/audios?openid=xxx (GET)", 
          "sync": "/api/fragments/audios/sync (POST)"
        }, 
        "jokes": {
          "delete": "/api/fragments/jokes/<joke_id> (DELETE)", 
          "get": "/api/fragments/jokes?openid=xxx (GET)", 
          "sync": "/api/fragments/jokes/sync (POST)"
        }
      }, 
      "health": "/api/health", 
      "messages": "/api/messages", 
      "poem_game": {
        "answer": "/api/poem-game/answer (POST)", 
        "records": "/api/poem-game/records?openid=xxx (GET)", 
        "remove_poem": "/api/poem-game/user-poems/:poemId?openid=xxx (DELETE)", 
        "reset": "/api/poem-game/reset (POST)", 
        "select_poem": "/api/poem-game/select-poem (POST)", 
        "stats": "/api/poem-game/stats?openid=xxx (GET)", 
        "status": "/api/poem-game/status?openid=xxx (GET)", 
        "unanswered": "/api/poem-game/unanswered?openid=xxx (GET)", 
        "user_poems": "/api/poem-game/user-poems?openid=xxx (GET)"
      }, 
      "poems": {
        "detail": "/api/poems/<id> (GET)", 
        "list": "/api/poems (GET)", 
        "random": "/api/poems/random?count=10 (GET)"
      }, 
      "records": {
        "create": "/api/records (POST)", 
        "delete": "/api/records/<record_id> (DELETE)", 
        "get": "/api/records?openid=xxx (GET)", 
        "sync": "/api/records/sync (POST)", 
        "update": "/api/records (PUT)"
      }, 
      "subscribe": {
        "get": "/api/subscribe/get (GET/POST)", 
        "logs": "/api/subscribe/logs (GET)", 
        "send": "/api/subscribe/send (POST)", 
        "set": "/api/subscribe/set (POST)", 
        "unsubscribe": "/api/subscribe/unsubscribe (POST)"
      }, 
      "upload": {
        "audio": "/api/upload/audio (POST)", 
        "file": "/api/upload/file (POST)", 
        "general": "/api/upload (POST)", 
        "image": "/api/upload/image (POST)"
      }, 
      "wxlogin": "/api/user/wxlogin (POST)"
    }, 
    "message_board": "/message"
  }, 
  "message": "API Server", 
  "version": "1.0.0"
}
