mirror of https://github.com/msgbyte/tailchat
				
				
				
			docs: add some openapi schema for user.service
							parent
							
								
									85e5b2732e
								
							
						
					
					
						commit
						8a29574480
					
				@ -0,0 +1,431 @@
 | 
			
		||||
openapi: 3.0.3
 | 
			
		||||
info:
 | 
			
		||||
  title: Tailchat API
 | 
			
		||||
  description: "Tailchat: The next-generation noIM Application in your own workspace"
 | 
			
		||||
  contact:
 | 
			
		||||
    name: moonrailgun
 | 
			
		||||
    url: https://tailchat.msgbyte.com/
 | 
			
		||||
    email: moonrailgun@gmail.com
 | 
			
		||||
  license:
 | 
			
		||||
    name: Apache 2.0
 | 
			
		||||
    url: https://www.apache.org/licenses/LICENSE-2.0.html
 | 
			
		||||
  version: 1.7.6
 | 
			
		||||
servers:
 | 
			
		||||
  - url: http://localhost:11000
 | 
			
		||||
    description: localhost
 | 
			
		||||
paths:
 | 
			
		||||
  /api/debug/hello:
 | 
			
		||||
    get:
 | 
			
		||||
      tags:
 | 
			
		||||
        - debug
 | 
			
		||||
      summary: Send debug action
 | 
			
		||||
      parameters:
 | 
			
		||||
        - in: query
 | 
			
		||||
          name: name
 | 
			
		||||
          schema:
 | 
			
		||||
            type: string
 | 
			
		||||
          required: false
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          description: ok (code 0)
 | 
			
		||||
          content:
 | 
			
		||||
            application/json:
 | 
			
		||||
              schema:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  code:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    example: 200
 | 
			
		||||
                  data:
 | 
			
		||||
                    type: string
 | 
			
		||||
  /api/user/login:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Login Tailchat with email and password
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                email:
 | 
			
		||||
                  type: string
 | 
			
		||||
                password:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/UserInfo'
 | 
			
		||||
        '422':
 | 
			
		||||
          $ref: '#/components/responses/EntityError'
 | 
			
		||||
  /api/user/verifyEmail:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: verifyEmail Email with send mail
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                email:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/ActionSuccess'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
  /api/user/verifyEmailWithOTP:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: verifyEmail Email with apply email OTP
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                email:
 | 
			
		||||
                  type: string
 | 
			
		||||
                password:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/UserInfo'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
 | 
			
		||||
  /api/user/register:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Register Account
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              oneOf:
 | 
			
		||||
                - type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    email:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    password:
 | 
			
		||||
                      type: string
 | 
			
		||||
                - type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    email:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    password:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    emailOTP:
 | 
			
		||||
                      type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/UserInfo'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
  /api/user/modifyPassword:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Modify Account Password
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                oldPassword:
 | 
			
		||||
                  type: string
 | 
			
		||||
                newPassword:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/ActionSuccess'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
  /api/user/createTemporaryUser:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Create Temporary User
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                nickname:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/UserInfo'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
  /api/user/claimTemporaryUser:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Claim Temporary User
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              oneOf:
 | 
			
		||||
                - type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    userId:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    email:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    password:
 | 
			
		||||
                      type: string
 | 
			
		||||
                - type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    userId:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    email:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    password:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    emailOTP:
 | 
			
		||||
                      type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/UserInfo'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
  /api/user/forgetPassword:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Forget Password
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                email:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/ActionSuccess'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
 | 
			
		||||
  /api/user/resetPassword:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Reset Password
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                email:
 | 
			
		||||
                  type: string
 | 
			
		||||
                password:
 | 
			
		||||
                  type: string
 | 
			
		||||
                  description: new password
 | 
			
		||||
                otp:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/ActionSuccess'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
  /api/user/resolveToken:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Login with token
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                token:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/UserInfo'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
  /api/user/checkTokenValid:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
        - user
 | 
			
		||||
      summary: Check Token Valid
 | 
			
		||||
      requestBody:
 | 
			
		||||
        required: true
 | 
			
		||||
        content:
 | 
			
		||||
          application/json:
 | 
			
		||||
            schema:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                token:
 | 
			
		||||
                  type: string
 | 
			
		||||
      responses:
 | 
			
		||||
        '200':
 | 
			
		||||
          $ref: '#/components/responses/Boolean'
 | 
			
		||||
        '401':
 | 
			
		||||
          $ref: '#/components/responses/Unauthorized'
 | 
			
		||||
        '500':
 | 
			
		||||
          $ref: '#/components/responses/ServerError'
 | 
			
		||||
 | 
			
		||||
components:
 | 
			
		||||
  responses:
 | 
			
		||||
    ActionSuccess:
 | 
			
		||||
      description: No response and return true
 | 
			
		||||
      content:
 | 
			
		||||
        application/json:
 | 
			
		||||
          schema:
 | 
			
		||||
            $ref: '#/components/schemas/Success'
 | 
			
		||||
    Boolean:
 | 
			
		||||
      description: Return true or false
 | 
			
		||||
      content:
 | 
			
		||||
        application/json:
 | 
			
		||||
          schema:
 | 
			
		||||
            oneOf:
 | 
			
		||||
              - $ref: '#/components/schemas/Success'
 | 
			
		||||
              - $ref: '#/components/schemas/Failed'
 | 
			
		||||
    UserInfo:
 | 
			
		||||
      description: User Info
 | 
			
		||||
      content:
 | 
			
		||||
        application/json:
 | 
			
		||||
          schema:
 | 
			
		||||
            type: object
 | 
			
		||||
            properties:
 | 
			
		||||
              code:
 | 
			
		||||
                type: integer
 | 
			
		||||
                example: 200
 | 
			
		||||
              data:
 | 
			
		||||
                $ref: '#/components/schemas/UserPayload'
 | 
			
		||||
    Unauthorized:
 | 
			
		||||
      description: Unauthorized
 | 
			
		||||
      content:
 | 
			
		||||
        application/json:
 | 
			
		||||
          schema:
 | 
			
		||||
            $ref: '#/components/schemas/Error'
 | 
			
		||||
    EntityError:
 | 
			
		||||
      description: EntityError
 | 
			
		||||
      content:
 | 
			
		||||
        application/json:
 | 
			
		||||
          schema:
 | 
			
		||||
            $ref: '#/components/schemas/Error'
 | 
			
		||||
    ServerError:
 | 
			
		||||
      description: EntityError
 | 
			
		||||
      content:
 | 
			
		||||
        application/json:
 | 
			
		||||
          schema:
 | 
			
		||||
            $ref: '#/components/schemas/Error'
 | 
			
		||||
 | 
			
		||||
  schemas:
 | 
			
		||||
    UserPayload:
 | 
			
		||||
      type: object
 | 
			
		||||
      properties:
 | 
			
		||||
        _id:
 | 
			
		||||
          type: string
 | 
			
		||||
        email:
 | 
			
		||||
          type: string
 | 
			
		||||
        nickname:
 | 
			
		||||
          type: string
 | 
			
		||||
        discriminator:
 | 
			
		||||
          type: string
 | 
			
		||||
        temporary:
 | 
			
		||||
          type: boolean
 | 
			
		||||
          example: false
 | 
			
		||||
        avatar:
 | 
			
		||||
          type: string
 | 
			
		||||
        type:
 | 
			
		||||
          type: string
 | 
			
		||||
          enum:
 | 
			
		||||
            - normalUser
 | 
			
		||||
            - pluginBot
 | 
			
		||||
            - openapiBot
 | 
			
		||||
          example: normalUser
 | 
			
		||||
        emailVerified:
 | 
			
		||||
          type: boolean
 | 
			
		||||
        banned:
 | 
			
		||||
          type: boolean
 | 
			
		||||
          example: false
 | 
			
		||||
        createdAt:
 | 
			
		||||
          type: string
 | 
			
		||||
        token:
 | 
			
		||||
          type: string
 | 
			
		||||
    # Schema for success response body
 | 
			
		||||
    Success:
 | 
			
		||||
      type: object
 | 
			
		||||
      properties:
 | 
			
		||||
        code:
 | 
			
		||||
          type: string
 | 
			
		||||
          example: 200
 | 
			
		||||
        data:
 | 
			
		||||
          type: boolean
 | 
			
		||||
          example: true
 | 
			
		||||
      required:
 | 
			
		||||
        - code
 | 
			
		||||
        - message
 | 
			
		||||
    Failed:
 | 
			
		||||
      type: object
 | 
			
		||||
      properties:
 | 
			
		||||
        code:
 | 
			
		||||
          type: string
 | 
			
		||||
          example: 200
 | 
			
		||||
        data:
 | 
			
		||||
          type: boolean
 | 
			
		||||
          example: false
 | 
			
		||||
      required:
 | 
			
		||||
        - code
 | 
			
		||||
        - message
 | 
			
		||||
    # Schema for error response body
 | 
			
		||||
    Error:
 | 
			
		||||
      type: object
 | 
			
		||||
      properties:
 | 
			
		||||
        code:
 | 
			
		||||
          type: string
 | 
			
		||||
        message:
 | 
			
		||||
          type: string
 | 
			
		||||
      required:
 | 
			
		||||
        - code
 | 
			
		||||
        - message
 | 
			
		||||
 | 
			
		||||
  securitySchemes:
 | 
			
		||||
    JWTAuth:
 | 
			
		||||
      type: apiKey
 | 
			
		||||
      in: header
 | 
			
		||||
      name: X-Token
 | 
			
		||||
      description: Token which get from login
 | 
			
		||||
 | 
			
		||||
security:
 | 
			
		||||
  - JWTAuth: []
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue