cfmcgrady opened a new issue #1354:
URL: https://github.com/apache/incubator-kyuubi/issues/1354


   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   
   
   ### Search before asking
   
   - [X] I have searched in the 
[issues](https://github.com/apache/incubator-kyuubi/issues?q=is%3Aissue) and 
found no similar issues.
   
   
   ### Describe the feature
   
   [ OpenAPI Specification](https://swagger.io/docs/specification/about/) 
provides:
   > OpenAPI Specification (formerly Swagger Specification) is an API 
description format for REST APIs. An OpenAPI file allows you to describe your 
entire API, including:
   >
   > - Available endpoints (/users) and operations on each endpoint (GET 
/users, POST /users)
   > - Operation parameters Input and output for each operation
   > - Authentication methods
   > - Contact information, license, terms of use and other information.
   
   Since we introduce restful API in 
[KPIP-1](https://github.com/apache/incubator-kyuubi/discussions/917), we should 
expose OpenAPI Specification
   
   ### Motivation
   
   _No response_
   
   ### Describe the solution
   
   _No response_
   
   ### Additional context
   
   ![截屏2021-11-09 上午10 43 
49](https://user-images.githubusercontent.com/8537877/140854244-a8d69986-7834-4c98-9bb2-06bd8b775a97.png)
   ![截屏2021-11-09 上午10 44 
30](https://user-images.githubusercontent.com/8537877/140854275-d8fca160-5d18-45ab-9455-0402b44452ea.png)
   
   
   ```json
   {
     "openapi": "3.0.1",
     "info": {
       "title": "Apache Kyuubi RESTful Api Documentation",
       "description": "Apache Kyuubi RESTful Api Documentation",
       "contact": {
         "name": "Apache Kyuubi Community",
         "url": "https://kyuubi.apache.org/issue_tracking.html";,
         "email": "[email protected]"
       },
       "license": {
         "name": "Apache 2.0",
         "url": "https://www.apache.org/licenses/LICENSE-2.0.html";
       },
       "version": "1.4.0"
     },
     "tags": [
       {
         "name": "Session"
       }
     ],
     "paths": {
       "/api/v1/ping": {
         "get": {
           "operationId": "ping",
           "responses": {
             "default": {
               "description": "default response",
               "content": {
                 "text/plain": {
                   "schema": {
                     "type": "string"
                   }
                 }
               }
             }
           }
         }
       },
       "/api/v1/sessions/{sessionHandle}": {
         "get": {
           "tags": [
             "Session"
           ],
           "operationId": "sessionInfo",
           "parameters": [
             {
               "name": "sessionHandle",
               "in": "path",
               "required": true,
               "schema": {
                 "type": "string"
               }
             }
           ],
           "responses": {
             "200": {
               "description": "get a session via session handle identifier",
               "content": {
                 "application/json": {}
               }
             }
           }
         },
         "delete": {
           "tags": [
             "Session"
           ],
           "operationId": "closeSession",
           "parameters": [
             {
               "name": "sessionHandle",
               "in": "path",
               "required": true,
               "schema": {
                 "type": "string"
               }
             }
           ],
           "responses": {
             "200": {
               "description": "close a Session",
               "content": {
                 "application/json": {}
               }
             }
           }
         }
       },
       "/api/v1/sessions/execPool/statistic": {
         "get": {
           "tags": [
             "Session"
           ],
           "operationId": "execPoolStatistic",
           "responses": {
             "200": {
               "description": "get some statistic info of sessions",
               "content": {
                 "application/json": {}
               }
             }
           }
         }
       },
       "/api/v1/sessions/{sessionHandle}/info/{infoType}": {
         "get": {
           "tags": [
             "Session"
           ],
           "operationId": "getInfo",
           "parameters": [
             {
               "name": "sessionHandle",
               "in": "path",
               "required": true,
               "schema": {
                 "type": "string"
               }
             },
             {
               "name": "infoType",
               "in": "path",
               "required": true,
               "schema": {
                 "type": "integer",
                 "format": "int32"
               }
             }
           ],
           "responses": {
             "200": {
               "description": "get a information detail via session handle 
identifier and a specific information type",
               "content": {
                 "application/json": {}
               }
             }
           }
         }
       },
       "/api/v1/sessions": {
         "get": {
           "tags": [
             "Session"
           ],
           "operationId": "sessionInfoList",
           "responses": {
             "200": {
               "description": "get all the session list hosted in 
SessionManager",
               "content": {
                 "application/json": {}
               }
             }
           }
         },
         "post": {
           "tags": [
             "Session"
           ],
           "operationId": "openSession",
           "requestBody": {
             "content": {
               "application/json": {
                 "schema": {
                   "$ref": "#/components/schemas/SessionOpenRequest"
                 }
               }
             }
           },
           "responses": {
             "200": {
               "description": "Open(create) a Session",
               "content": {
                 "application/json": {}
               }
             }
           }
         }
       },
       "/api/v1/sessions/count": {
         "get": {
           "tags": [
             "Session"
           ],
           "operationId": "sessionCount",
           "responses": {
             "200": {
               "description": "get open session count",
               "content": {
                 "application/json": {}
               }
             }
           }
         }
       },
       "/api/v1/exception": {
         "get": {
           "operationId": "test",
           "responses": {
             "default": {
               "description": "default response",
               "content": {
                 "text/plain": {}
               }
             }
           }
         }
       },
       "/application.wadl/{path}": {
         "get": {
           "operationId": "getExternalGrammar",
           "parameters": [
             {
               "name": "path",
               "in": "path",
               "required": true,
               "schema": {
                 "type": "string"
               }
             }
           ],
           "responses": {
             "default": {
               "description": "default response",
               "content": {
                 "application/xml": {}
               }
             }
           }
         }
       },
       "/application.wadl": {
         "get": {
           "operationId": "getWadl",
           "responses": {
             "default": {
               "description": "default response",
               "content": {
                 "application/vnd.sun.wadl+xml": {},
                 "application/xml": {}
               }
             }
           }
         }
       }
     },
     "components": {
       "schemas": {
         "ExecPoolStatistic": {
           "required": [
             "execPoolSize"
           ],
           "type": "object",
           "properties": {
             "execPoolSize": {
               "type": "integer",
               "format": "int32"
             },
             "execPoolActiveCount": {
               "type": "integer",
               "format": "int32"
             }
           }
         },
         "InfoDetail": {
           "required": [
             "infoType"
           ],
           "type": "object",
           "properties": {
             "infoType": {
               "type": "string"
             },
             "infoValue": {
               "type": "string"
             }
           }
         },
         "HandleIdentifier": {
           "required": [
             "publicId"
           ],
           "type": "object",
           "properties": {
             "publicId": {
               "type": "string",
               "format": "uuid"
             },
             "secretId": {
               "type": "string",
               "format": "uuid"
             }
           }
         },
         "SessionHandle": {
           "required": [
             "identifier",
             "protocol"
           ],
           "type": "object",
           "properties": {
             "identifier": {
               "$ref": "#/components/schemas/HandleIdentifier"
             },
             "protocol": {
               "type": "string",
               "enum": [
                 "HIVE_CLI_SERVICE_PROTOCOL_V1",
                 "HIVE_CLI_SERVICE_PROTOCOL_V2",
                 "HIVE_CLI_SERVICE_PROTOCOL_V3",
                 "HIVE_CLI_SERVICE_PROTOCOL_V4",
                 "HIVE_CLI_SERVICE_PROTOCOL_V5",
                 "HIVE_CLI_SERVICE_PROTOCOL_V6",
                 "HIVE_CLI_SERVICE_PROTOCOL_V7",
                 "HIVE_CLI_SERVICE_PROTOCOL_V8",
                 "HIVE_CLI_SERVICE_PROTOCOL_V9",
                 "HIVE_CLI_SERVICE_PROTOCOL_V10"
               ]
             }
           }
         },
         "MapStringString": {
           "type": "object",
           "additionalProperties": {
             "type": "string"
           }
         },
         "SessionOpenRequest": {
           "required": [
             "configs",
             "protocolVersion",
             "user"
           ],
           "type": "object",
           "properties": {
             "protocolVersion": {
               "type": "integer",
               "format": "int32"
             },
             "user": {
               "type": "string"
             },
             "password": {
               "type": "string"
             },
             "ipAddr": {
               "type": "string"
             },
             "configs": {
               "type": "object",
               "additionalProperties": {
                 "type": "string"
               }
             }
           }
         },
         "SessionOpenCount": {
           "required": [
             "openSessionCount"
           ],
           "type": "object",
           "properties": {
             "openSessionCount": {
               "type": "integer",
               "format": "int32"
             }
           }
         },
         "SessionDetail": {
           "required": [
             "configs",
             "createTime",
             "user"
           ],
           "type": "object",
           "properties": {
             "user": {
               "type": "string"
             },
             "ipAddr": {
               "type": "string"
             },
             "createTime": {
               "type": "integer",
               "format": "int64"
             },
             "sessionHandle": {
               "$ref": "#/components/schemas/SessionHandle"
             },
             "lastAccessTime": {
               "type": "integer",
               "format": "int64"
             },
             "lastIdleTime": {
               "type": "integer",
               "format": "int64"
             },
             "noOperationTime": {
               "type": "integer",
               "format": "int64"
             },
             "configs": {
               "type": "object",
               "additionalProperties": {
                 "type": "string"
               }
             }
           }
         },
         "SeqSessionOverview": {
           "type": "array",
           "items": {
             "$ref": "#/components/schemas/SessionOverview"
           }
         },
         "SessionList": {
           "required": [
             "sessionList"
           ],
           "type": "object",
           "properties": {
             "sessionList": {
               "type": "array",
               "items": {
                 "$ref": "#/components/schemas/SessionOverview"
               }
             }
           }
         },
         "SessionOverview": {
           "required": [
             "createTime",
             "user"
           ],
           "type": "object",
           "properties": {
             "user": {
               "type": "string"
             },
             "ipAddr": {
               "type": "string"
             },
             "createTime": {
               "type": "integer",
               "format": "int64"
             },
             "sessionHandle": {
               "$ref": "#/components/schemas/SessionHandle"
             }
           }
         }
       }
     }
   }
   
   ```
   
   
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to