blob: 7bbdc61b6c3c7bb427458107a5c16a7508b4a53f [file] [log] [blame]
/*
* 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
*
* https://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.
*/
package org.apache.nlpcraft.model.tools.cmdline
private [cmdline] case class RestSpec(
path: String,
desc: String,
group: String,
params: Seq[RestSpecParameter]
)
private [cmdline] sealed trait JsonType
private [cmdline] case object STRING extends JsonType
private [cmdline] case object BOOLEAN extends JsonType
private [cmdline] case object NUMERIC extends JsonType
private [cmdline] case object OBJECT extends JsonType
private [cmdline] case object ARRAY extends JsonType
private [cmdline] case class RestSpecParameter(
name: String,
kind: JsonType,
optional: Boolean = false // Mandatory by default.
)
// TODO: this needs to be loaded dynamically from OpenAPI spec.
/**
* NLPCraft REST specification.
*/
private [cmdline] object NCCliRestSpec {
//noinspection DuplicatedCode
private [cmdline] final val REST_SPEC = Seq(
RestSpec(
path = "clear/conversation",
desc = "Clears conversation STM",
group = "Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true)
)
),
RestSpec(
"clear/dialog",
"Clears dialog flow",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true)
)
),
RestSpec(
"model/sugsyn",
"Runs model synonym suggestion tool",
"Tools",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING),
RestSpecParameter(name = "minScore", kind = NUMERIC)
)
),
RestSpec(
"model/syns",
"Gets model element synonyms",
"Tools",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING),
RestSpecParameter(name = "elmId", kind = STRING)
)
),
RestSpec(
"model/info",
"Gets model configuration and elements",
"Tools",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING)
)
),
RestSpec(
"check",
"Gets status and result of submitted requests",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true),
RestSpecParameter(name = "srvReqIds", kind = ARRAY, optional = true),
RestSpecParameter(name = "maxRows", kind = NUMERIC, optional = true)
)
),
RestSpec(
"cancel",
"Cancels a question",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true),
RestSpecParameter(name = "srvReqIds", kind = ARRAY, optional = true),
)
),
RestSpec(
"ask",
"Asks a question",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true),
RestSpecParameter(name = "txt", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING),
RestSpecParameter(name = "data", kind = OBJECT, optional = true),
RestSpecParameter(name = "enableLog", kind = BOOLEAN, optional = true),
)
),
RestSpec(
"ask/sync",
"Asks a question in synchronous mode",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true),
RestSpecParameter(name = "txt", kind = STRING),
RestSpecParameter(name = "mdlId", kind = STRING),
RestSpecParameter(name = "data", kind = OBJECT, optional = true),
RestSpecParameter(name = "enableLog", kind = BOOLEAN, optional = true),
)
),
RestSpec(
"user/get",
"Gets current user information",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "id", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true)
)
),
RestSpec(
"user/all",
"Gets all users",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
)
),
RestSpec(
"user/update",
"Updates regular user",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "firstName", kind = STRING),
RestSpecParameter(name = "lastName", kind = STRING),
RestSpecParameter(name = "id", kind = STRING, optional = true),
RestSpecParameter(name = "avatarUrl", kind = STRING, optional = true),
RestSpecParameter(name = "properties", kind = OBJECT, optional = true)
)
),
RestSpec(
"user/delete",
"Deletes user",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "id", kind = STRING, optional = true),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true)
)
),
RestSpec(
"user/admin",
"Updates user admin permissions",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "id", kind = STRING, optional = true),
RestSpecParameter(name = "isAdmin", kind = BOOLEAN)
)
),
RestSpec(
"user/passwd/reset",
"Resets password for the user",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "id", kind = STRING, optional = true),
RestSpecParameter(name = "newPasswd", kind = STRING)
)
),
RestSpec(
"user/add",
"Adds new user",
"User",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "firstName", kind = STRING),
RestSpecParameter(name = "lastName", kind = STRING),
RestSpecParameter(name = "email", kind = STRING),
RestSpecParameter(name = "passwd", kind = STRING),
RestSpecParameter(name = "isAdmin", kind = BOOLEAN),
RestSpecParameter(name = "usrExtId", kind = STRING, optional = true),
RestSpecParameter(name = "avatarUrl", kind = STRING, optional = true),
RestSpecParameter(name = "properties", kind = OBJECT, optional = true)
)
),
RestSpec(
"company/get",
"Gets current user company information",
"Company",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
)
),
RestSpec(
"company/add",
"Adds new company",
"Company",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "name", kind = STRING),
RestSpecParameter(name = "website", kind = STRING, optional = true),
RestSpecParameter(name = "country", kind = STRING, optional = true),
RestSpecParameter(name = "region", kind = STRING, optional = true),
RestSpecParameter(name = "city", kind = STRING, optional = true),
RestSpecParameter(name = "address", kind = STRING, optional = true),
RestSpecParameter(name = "postalCode", kind = STRING, optional = true),
RestSpecParameter(name = "adminEmail", kind = STRING),
RestSpecParameter(name = "adminPasswd", kind = STRING),
RestSpecParameter(name = "adminFirstName", kind = STRING),
RestSpecParameter(name = "adminLastName", kind = STRING),
RestSpecParameter(name = "adminAvatarUrl", kind = STRING, optional = true)
)
),
RestSpec(
"company/update",
"Updates company data",
"Company",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "name", kind = STRING),
RestSpecParameter(name = "website", kind = STRING, optional = true),
RestSpecParameter(name = "country", kind = STRING, optional = true),
RestSpecParameter(name = "region", kind = STRING, optional = true),
RestSpecParameter(name = "city", kind = STRING, optional = true),
RestSpecParameter(name = "address", kind = STRING, optional = true),
RestSpecParameter(name = "postalCode", kind = STRING, optional = true)
)
),
RestSpec(
"company/delete",
"Deletes company",
"Company",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
)
),
RestSpec(
"company/token/reset",
"Resets company probe auth token",
"Company",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
)
),
RestSpec(
"feedback/add",
"Adds feedback",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "extUsrId", kind = STRING, optional = true),
RestSpecParameter(name = "comment", kind = STRING, optional = true),
RestSpecParameter(name = "srvReqId", kind = STRING),
RestSpecParameter(name = "score", kind = STRING)
)
),
RestSpec(
"feedback/delete",
"Deletes feedback",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "id", kind = NUMERIC)
)
),
RestSpec(
"feedback/all",
"Gets all feedback",
"Asking",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
RestSpecParameter(name = "usrId", kind = STRING, optional = true),
RestSpecParameter(name = "extUsrId", kind = STRING, optional = true),
RestSpecParameter(name = "srvReqId", kind = STRING, optional = true)
)
),
RestSpec(
"signin",
"Signs in and obtains new access token",
"Authentication",
params = Seq(
RestSpecParameter(name = "email", kind = STRING),
RestSpecParameter(name = "passwd", kind = STRING)
)
),
RestSpec(
"signout",
"Signs out and releases access token",
"Authentication",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
)
),
RestSpec(
"probe/all",
"Gets all probes",
"Probe",
params = Seq(
RestSpecParameter(name = "acsTok", kind = STRING),
)
)
)
}