definitions:
  learnsteam_learsteam-quiz-api_internal_models.LoginResponse:
    properties:
      refresh_token:
        example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3MDc4OTcwMjcs
        type: string
      token:
        example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3MDI3MTMwMjcsInN1
        type: string
      user:
        $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.User'
    type: object
  learnsteam_learsteam-quiz-api_internal_models.Program:
    properties:
      content:
        example: 코스 설명
        type: string
      course:
        example: 코스 이름
        type: string
      id:
        example: ef74c59a-c707-4162-a52b-455906c81ec1
        type: string
      publish_at:
        example: "2023-11-10T00:00:00+09:00"
        type: string
      status:
        example: "on"
        type: string
      subject:
        example: 프로그램 제목
        type: string
      tag:
        items:
          type: integer
        type: array
    type: object
  learnsteam_learsteam-quiz-api_internal_models.ProgramListResponse:
    properties:
      data:
        items:
          $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.Program'
        type: array
      page:
        example: 1
        type: integer
      pageSize:
        example: 10
        type: integer
      total:
        example: 999
        type: integer
      totalPage:
        example: 99
        type: integer
    type: object
  learnsteam_learsteam-quiz-api_internal_models.ProgramResponse:
    properties:
      content:
        example: 코스 설명
        type: string
      course:
        example: 코스 이름
        type: string
      id:
        example: ef74c59a-c707-4162-a52b-455906c81ec1
        type: string
      publish_at:
        example: "2023-11-10T00:00:00+09:00"
        type: string
      status:
        example: "on"
        type: string
      subject:
        example: 프로그램 제목
        type: string
      tag:
        example:
        - tag1
        - tag2
        items:
          type: string
        type: array
    type: object
  learnsteam_learsteam-quiz-api_internal_models.Quiz:
    properties:
      answer:
        items:
          type: integer
        type: array
      choice:
        items:
          type: integer
        type: array
      comment:
        example: 퀴즈 해설
        type: string
      hint:
        example: 퀴즈 힌트
        type: string
      id:
        example: 1b066168-68c4-4b50-bc9a-b6c4fceaf378
        type: string
      program_id:
        example: 2036023a-fb56-4b6c-b3bb-c787c681ada6
        type: string
      question:
        example: 퀴즈 질문입니다.
        type: string
      quiz_type:
        example: choice
        type: string
      sequence:
        example: 5
        type: integer
    type: object
  learnsteam_learsteam-quiz-api_internal_models.QuizListResponse:
    properties:
      data:
        items:
          $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.Quiz'
        type: array
      page:
        example: 1
        type: integer
      pageSize:
        example: 10
        type: integer
      total:
        example: 5
        type: integer
      totalPage:
        example: 1
        type: integer
    type: object
  learnsteam_learsteam-quiz-api_internal_models.QuizResponse:
    properties:
      answer:
        items:
          type: integer
        type: array
      choice:
        items:
          type: integer
        type: array
      comment:
        example: 퀴즈 해설
        type: string
      hint:
        example: 퀴즈 힌트
        type: string
      id:
        example: 1b066168-68c4-4b50-bc9a-b6c4fceaf378
        type: string
      program_id:
        example: 2036023a-fb56-4b6c-b3bb-c787c681ada6
        type: string
      question:
        example: 퀴즈 질문입니다.
        type: string
      quiz_type:
        example: check
        type: string
      sequence:
        example: 5
        type: integer
    type: object
  learnsteam_learsteam-quiz-api_internal_models.RegisterResponse:
    properties:
      refresh_token:
        example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3MDc4OTcwMjcs
        type: string
      token:
        example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3MDI3MTMwMjcsInN1
        type: string
      user:
        $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.User'
    type: object
  learnsteam_learsteam-quiz-api_internal_models.User:
    properties:
      id:
        example: 137c1683-2ad6-4201-b256-253828b61c49
        type: string
      name:
        example: 홍길동
        type: string
      score:
        example: 9999
        type: integer
      username:
        example: user0
        type: string
    type: object
  learnsteam_learsteam-quiz-api_internal_models.UserListResponse:
    properties:
      data:
        items:
          $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.User'
        type: array
      page:
        example: 1
        type: integer
      pageSize:
        example: 10
        type: integer
      total:
        example: 90
        type: integer
      totalPage:
        example: 9
        type: integer
    type: object
info:
  contact:
    email: sheen@jongyeob.com
    name: Jay Sheen
  description: Learnsteam Quiz 서비스 API
  title: Learsteam Quiz API
  version: "1.0"
paths:
  /auth/login:
    post:
      consumes:
      - application/json
      description: username, password 를 입력하여 로그인
      parameters:
      - description: username
        in: body
        name: username
        required: true
        schema:
          type: string
      - description: 비밀번호
        in: body
        name: password
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.LoginResponse'
      summary: 로그인
      tags:
      - 로그인
  /auth/register:
    post:
      consumes:
      - application/json
      description: username, name, password 를 입력하여 회원가입
      parameters:
      - description: username
        in: body
        name: username
        required: true
        schema:
          type: string
      - description: 이름
        in: body
        name: name
        required: true
        schema:
          type: string
      - description: 비밀번호
        in: body
        name: password
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.RegisterResponse'
      summary: 회원가입
      tags:
      - 회원가입
  /program:
    get:
      consumes:
      - application/json
      description: 퀴즈 프로그램 목록을 가져옵니다.
      parameters:
      - description: 태그
        in: query
        name: tag
        type: string
      - description: 검색어
        in: query
        name: q
        type: string
      - description: 페이지
        in: query
        name: page
        type: integer
      - description: 페이지 사이즈
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.ProgramListResponse'
      summary: 프로그램 목록 가져오기
      tags:
      - Program
    post:
      consumes:
      - application/json
      description: 퀴즈 프로그램을 만듭니다.
      parameters:
      - description: 프로그램 제목
        in: body
        name: subject
        required: true
        schema:
          type: string
      - description: 프로그램 코스
        in: body
        name: course
        required: true
        schema:
          type: string
      - description: 프로그램 내용
        in: body
        name: content
        required: true
        schema:
          type: string
      - description: 프로그램 태그
        in: body
        name: tag
        required: true
        schema:
          items:
            type: string
          type: array
      - description: 프로그램 상태 on 또는 off
        in: body
        name: status
        required: true
        schema:
          type: string
      - description: 프로그램 발행 날짜
        in: body
        name: publish_at
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.ProgramResponse'
      summary: 퀴즈 프로그램 생성
      tags:
      - Program
    put:
      consumes:
      - application/json
      description: 퀴즈 프로그램을 수정합니다.
      parameters:
      - description: 프로그램 제목
        in: body
        name: subject
        required: true
        schema:
          type: string
      - description: 프로그램 코스
        in: body
        name: course
        required: true
        schema:
          type: string
      - description: 프로그램 내용
        in: body
        name: content
        required: true
        schema:
          type: string
      - description: 프로그램 태그
        in: body
        name: tag
        required: true
        schema:
          items:
            type: string
          type: array
      - description: 프로그램 상태 on 또는 off
        in: body
        name: status
        required: true
        schema:
          type: string
      - description: 프로그램 발행 날짜
        in: body
        name: publish_at
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.ProgramResponse'
      summary: 퀴즈 프로그램 수정
      tags:
      - Program
  /program/{id}:
    get:
      consumes:
      - application/json
      description: ID로 퀴즈 프로그램을 가져옵니다.
      parameters:
      - description: 퀴즈 프로그램 ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.ProgramResponse'
      summary: 퀴즈 프로그램 가져오기
      tags:
      - Program
  /quiz:
    get:
      consumes:
      - application/json
      description: 퀴즈 목록을 가져옵니다.
      parameters:
      - description: 프로그램 ID
        in: query
        name: program_id
        required: true
        type: string
      - description: 검색어
        in: query
        name: q
        type: string
      - description: 페이지
        in: query
        name: page
        type: integer
      - description: 페이지 사이즈
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.QuizListResponse'
      summary: 퀴즈 목록 가져오기
      tags:
      - Quiz
    post:
      consumes:
      - application/json
      description: 퀴즈를 만듭니다.
      parameters:
      - description: 프로그램 ID
        in: body
        name: program_id
        required: true
        schema:
          type: string
      - description: 퀴즈 순서
        in: body
        name: sequence
        required: true
        schema:
          type: integer
      - description: '퀴즈 타입 : choice, check, ox, input'
        in: body
        name: quiz_type
        required: true
        schema:
          type: string
      - description: 퀴즈 문제
        in: body
        name: question
        required: true
        schema:
          type: string
      - description: '퀴즈 선택지 : [''선택1'',''선택2'',''선택3'', ''선택4'']'
        in: body
        name: choice
        required: true
        schema:
          items:
            type: string
          type: array
      - description: '퀴즈 정답 : [1,3]'
        in: body
        name: answer
        required: true
        schema:
          items:
            type: string
          type: array
      - description: 퀴즈 힌트
        in: body
        name: hint
        required: true
        schema:
          type: string
      - description: 퀴즈 해설
        in: body
        name: comment
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.QuizResponse'
      summary: 퀴즈 생성
      tags:
      - Quiz
    put:
      consumes:
      - application/json
      description: 퀴즈를 수정합니다.
      parameters:
      - description: 퀴즈 ID
        in: path
        name: id
        required: true
        type: string
      - description: 프로그램 ID
        in: body
        name: program_id
        required: true
        schema:
          type: string
      - description: 퀴즈 순서
        in: body
        name: sequence
        required: true
        schema:
          type: integer
      - description: '퀴즈 타입 : choice, check, ox, input'
        in: body
        name: quiz_type
        required: true
        schema:
          type: string
      - description: 퀴즈 문제
        in: body
        name: question
        required: true
        schema:
          type: string
      - description: '퀴즈 선택지 : [''선택1'',''선택2'',''선택3'', ''선택4'']'
        in: body
        name: choice
        required: true
        schema:
          items:
            type: string
          type: array
      - description: '퀴즈 정답 : [1,3]'
        in: body
        name: answer
        required: true
        schema:
          items:
            type: string
          type: array
      - description: 퀴즈 힌트
        in: body
        name: hint
        required: true
        schema:
          type: string
      - description: 퀴즈 해설
        in: body
        name: comment
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.QuizResponse'
      summary: 퀴즈 수정
      tags:
      - Quiz
  /quiz/{id}:
    get:
      consumes:
      - application/json
      description: ID로 퀴즈를 가져옵니다.
      parameters:
      - description: 퀴즈 ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.QuizResponse'
      summary: 퀴즈 가져오기
      tags:
      - Quiz
  /token/refresh:
    post:
      consumes:
      - application/json
      description: AccessToken을 RefreshToken으로 갱신합니다.
      parameters:
      - description: RefreshToken
        in: body
        name: refresh_token
        required: true
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.ProgramResponse'
      summary: AccessToken Refresh
      tags:
      - Token
  /user:
    get:
      consumes:
      - application/json
      description: 사용자 목록을 가져옵니다.
      parameters:
      - description: 검색어
        in: query
        name: q
        type: string
      - description: 페이지
        in: query
        name: page
        type: integer
      - description: 페이지 사이즈
        in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.UserListResponse'
      summary: 사용자 목록 가져오기
      tags:
      - User
  /user/{id}:
    get:
      consumes:
      - application/json
      description: ID로 사용자 정보를 가져옵니다.
      parameters:
      - description: 사용자 ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/learnsteam_learsteam-quiz-api_internal_models.User'
      summary: 사용자 정보 가져오기
      tags:
      - User
swagger: "2.0"
