openapi: 3.0.0
info:
  title: Express Typescript API
  description: User API Docs
  version: "1.0.0"
schemes:
  - https
  - http
tags:
  - name: users
    description: users API
paths:
  /users:
    get:
      tags: [users]
      summary: Find All Users
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
        500:
          description: Server Error
    post:
      tags: [users]
      summary: Add User
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        201:
          description: Created
        400:
          description: Bad Request
        409:
          description: Conflict
        500:
          description: Server Error
  /users/{id}:
    get:
      tags: [users]
      summary: Find User By Id
      parameters:
        - name: id
          in: path
          description: User Id
          required: true
          schema:
            type: string
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        404:
          description: Not Found
        500:
          description: Server Error
    put:
      tags: [users]
      summary: Update User By Id
      parameters:
        - name: id
          in: path
          description: user Id
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        200:
          description: OK
        400:
          description: Bad Request
        409:
          description: Conflict
        500:
          description: Server Error
    delete:
      tags: [users]
      summary: Delete User By Id
      parameters:
        - name: id
          in: path
          description: user Id
          required: true
          schema:
            type: string
      responses:
        204:
          description: No Content
        404:
          description: Not Found
        500:
          description: Server Error

components:
  schemas:
    User:
      type: object
      required:
        - email
        - password
      properties:
        id:
          type: string
        email:
          type: string
        password:
          type: string
