You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kyuubi.apache.org by GitBox <gi...@apache.org> on 2021/11/09 03:04:40 UTC

[GitHub] [incubator-kyuubi] cfmcgrady opened a new issue #1354: [FEATURE] Expose OpenAPI Specifications

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": "dev@kyuubi.apache.org"
       },
       "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: dev-unsubscribe@kyuubi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-kyuubi] ulysses-you closed issue #1354: [FEATURE] Expose OpenAPI Specifications

Posted by GitBox <gi...@apache.org>.
ulysses-you closed issue #1354:
URL: https://github.com/apache/incubator-kyuubi/issues/1354


   


-- 
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: dev-unsubscribe@kyuubi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org