#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

server:
  - name: ask
    description: <code>/ask</code> REST call

  - name: cancel
    description: <code>/cancel</code> REST call

  - name: check
    description: <code>/check</code> REST call

  - name: signin
    description: <code>/signin</code> REST call

  - name: signout
    description: <code>/signout</code> REST call

  - name: ask_sync
    description: <code>/ask/sync</code> REST call

  - name: clear_conversation
    description: <code>/clear/conversation</code> REST call

  - name: clear_dialog
    description: <code>/clear/dialog</code> REST call

  - name: company_add
    description: <code>/company/add</code> REST call

  - name: company_update
    description: <code>/company/update</code> REST call

  - name: company_token
    description: <code>/company/token</code> REST call

  - name: company_delete
    description: <code>/company/delete</code> REST call

  - name: feedback_add
    description: <code>/feedback/add</code> REST call

  - name: feedback_delete
    description: <code>/feedback/delete</code> REST call

  - name: feedback_all
    description: <code>/feedback/all</code> REST call

  - name: user_add
    description: <code>/user/add</code> REST call

  - name: user_delete
    description: <code>/user/delete</code> REST call

  - name: user_update
    description: <code>/user/update</code> REST call

  - name: user_admin
    description: <code>/user/admin</code> REST call

  - name: user_passwd
    description: <code>/user/passwd</code> REST call

  - name: user_all
    description: <code>/user/all</code> REST call

  - name: probe_all
    description: <code>/probe/all</code> REST call

  - name: roundtrip
    description: server-probe-server rountrip

probe:
  - name: sys_task
    description: system tasks

  - name: user_task
    description: user tasks